int * const AND extern int *

时间:2016-03-28 09:00:51

标签: c

有两种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的值不能改变。
为什么呢?

1 个答案:

答案 0 :(得分:1)

使用:

int const a=10;

在整个程序执行期间,a的值保持不变。

使用:

int* const a=&b;

a包含的值,即b的地址始终保持不变。

b的值可以改变。