gpt4 book ai didi

c++ - 指针的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:11:01 25 4
gpt4 key购买 nike

当我编译给定的代码时,它不会产生任何错误或警告。我的问题是编译器在编译以下行 *err = "Error message"; 时不应该产生错误,因为我们正在取消引用一个指向常量 char 的指针 和给它分配一个字符串。

是否允许在指针内分配地址以外的任何内容,以及在这个给定场景中到底发生了什么?

#include <stdio.h>

void set_error(const char**);

int main(int argc, const char* argv[])
{
const char* err;
set_error(&err);
printf("%s",err);
return 0;
}


void set_error(const char** err1)
{
*err1 = "Error message";
}

最佳答案

const char** err1

这是指向常量对象的非常量指针的指针。取消引用它会给出一个非常量指针(指向一个常量对象),可以将其分配给。

为了防止分配给 const char*,它也必须是 const:

const char * const * err1

关于c++ - 指针的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20402668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com