#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int *p = arr;
++*p;
p += 2;
printf("%d", *p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码没有给出任何编译时错误,我的疑问被++*p
评估为++(*p)
并且*p
将是常量值1
,当我们做++(1)
的不是l值时,为什么编译器没有给出错误?
#include <stdio.h>
int main()
{
int i = 10;
int *const p = &i;
foo(&p);
printf("%d\n", *p);
}
void foo(int **p)
{
int j = 11;
*p = &j;
printf("%d\n", **p);
}
Run Code Online (Sandbox Code Playgroud)
p
是指向变量x的常量指针,不能指向其他变量.但为什么我们不在这里得到错误,输出是11 11
?