素韵亦轩 发表于 2017-7-10 10:15:44

C语言指针指向全局变量,可以改变全局变量的值吗

定义一个全局变量a,定义一个函数caller,在caller内部定义一个指针*p,并将*p指向a,在caller内部对*p地址的值进行+1,那么调用caller函数的时候,全局变量a的值会发生改变吗?

ba21 发表于 2017-7-10 10:40:32

对*p地址指向的值加1。还是对*p存放的地址加1???

人造人 发表于 2017-7-10 10:48:00

这种问题,你试一试就知道了吧

小甲鱼 发表于 2017-7-10 11:45:36

#include <stdio.h>

int a;

void caller(void)
{
      int *p = &a;
      (*p)++;
}

int main(void)
{
      printf("Before, a = %d\n", a);
      caller();
      printf("After, a = %d\n", a);

      return 0;
}

输出如下:

$ gcc test.c && ./a.out
Before, a = 0
After, a = 1

素韵亦轩 发表于 2017-7-10 14:11:23

谢谢@小甲鱼,也谢谢@人造人   上午只突然想到了这个问题,却忘了自己动手实验
页: [1]
查看完整版本: C语言指针指向全局变量,可以改变全局变量的值吗