【发布时间】:2016-04-30 09:06:19
【问题描述】:
#include<stdio.h>
void foo(int **p)
{
int j=11;
*p = &j;
printf("%d ", **p);
}
int main(void)
{
int i = 10;
int *const p = &i;
foo(&p);
printf("%d ", *p);
return 0;
}
编译时:
example.c:12:2: warning: passing argument 1 of ‘foo’ discards ‘const’ qualifier from pointer target type [enabled by default]
foo(&p);
example.c:2:6: note: expected ‘int **’ but argument is of type ‘int * const*’
void foo(int **p)
运行中:
11 11
这里的p是一个常量指针,为什么改变它的内容没有错误,只有警告?
我对上述程序的怀疑是因为以下程序:
#include<stdio.h>
int main(void)
{
int var1 = 0, var2 = 0;
int *const ptr = &var1;
ptr = &var2;
printf("%d\n", *ptr);
return 0;
}
编译时:
error: assignment of read-only variable ‘ptr’
ptr = &var2;
【问题讨论】:
-
post 可能会有所帮助
标签: c compiler-errors constants compiler-warnings