有两种C语言苍蝇
main.c
:
// main.c
#include <stdio.h>
extern int * a;
extern int d;
int main(){
printf("==> a==>%p\n", a);
printf("==>&a==>%p\n", &a);
printf("==>%zd\n", *a);
printf("======================\n");
int c = 5;
a = &c;
printf("==> a==>%p\n", a);
printf("==>&a==>%p\n", &a);
printf("==>%zd\n", *a);
printf("======================\n");
d = 5;
printf("==>%d\n", d);
return 0;
}
global.c
:
// global.c
int b = 1;
int * const a = &b;
int const d = 1;
我运行命令cc main.c global.c
和./a.out
,然后我发现变量a
的值可以改变,变量d
的值不能改变。
为什么呢?
答案 0 :(得分:1)
使用:
int const a=10;
在整个程序执行期间,a的值保持不变。
使用:
int* const a=&b;
a包含的值,即b的地址始终保持不变。
b的值可以改变。