指针奇怪的行为

APa*_*Pan 1 c c++ pointers

当我编译给定的代码时,它不会产生任何错误或警告.我的问题是编译下面的行时编译器不应该产生错误,*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";
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 9

const char** err1
Run Code Online (Sandbox Code Playgroud)

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

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

const char * const * err1
Run Code Online (Sandbox Code Playgroud)