使用道具 举报
Post by cczy;1985866 我写了这样一个程序: #include <stdio.h> int main() { const int a=2; int *p; p=&a; printf("%d,a=%d\n",*p,a); (*p)++; printf("%d.a=%d\n",*p,a); return 0; } 用 gcc -Wall -o t1 t1.c 编译后,结果为: 2,a=2 3,a=3 然而用 gcc -Wall -O -o t1 t1.c 编译后,结果确为: 2,a=2 3,a=2 请问一下,这倒底是谁的错呀?
Post by cczy;1985869 第二个错误是: #include <stdio.h> int *t(void) { int i=3; return &i; } int main(void) { int *p; int i; for(i=0; i<3; i++) { p=t(); printf("%d\n",*p); } return 0; } 用 gcc -Wall -o t1 t1.c 编译后,结果为: 3 3 3 然而用 gcc -Wall -O -o t1 t1.c 编译后,结果确为: 2507256 1 2 请问一下,这倒底是谁的错呢?
本版积分规则 发表回复 回帖后跳转到最后一页