[学习资料] 指针在全局变量与局部变量之间的差异

[复制链接]
24955|93
 楼主| 21mengnan 发表于 2024-5-6 20:32 | 显示全部楼层 |阅读模式
本帖最后由 21mengnan 于 2024-5-23 15:06 编辑
  1. #include <stdio.h>

  2. int main()
  3. {

  4.         int a=10;
  5.         int *p1;
  6.         p1=&a;
  7.    printf("Hello, World! \n");
  8.    printf("a=%d \n",a);
  9.    printf("p1=%x \n",p1);
  10.    printf("*p1=%d \n",*p1);
  11.    return 0;
  12. }


以上程序的运行结果
那么将以上函数中变量定义为全局变量效果如何呢?
  1. #include <stdio.h>
  2. int a=10;
  3. int *p1;
  4. p1=&a;

  5. int main()
  6. {
  7.    printf("Hello, World! \n");
  8.    printf("a=%d \n",a);
  9.    printf("p1=%x \n",p1);
  10.    printf("*p1=%d \n",*p1);
  11.    return 0;
  12. }
大家猜猜结果
游客,如果您要查看本帖隐藏内容请回复



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 21mengnan 发表于 2024-5-6 20:32 | 显示全部楼层
为什么会这样呢?
有没有人想过?
 楼主| 21mengnan 发表于 2024-5-6 20:33 | 显示全部楼层
如果这样操作呢?
  1. #include <stdio.h>
  2. int a=10;
  3. int *p1;

  4. int main()
  5. {
  6.         p1=&a;
  7.    printf("Hello, World! \n");
  8.    printf("a=%d \n",a);
  9.    printf("p1=%x \n",p1);
  10.    printf("*p1=%d \n",*p1);
  11.    return 0;
  12. }
weifeng90 发表于 2024-5-7 08:07 来自手机 | 显示全部楼层
变量得应用要小心,否则把自己带坑里。
rgjinxuan 发表于 2024-5-20 17:24 | 显示全部楼层
勇敢的大白菜 发表于 2024-5-21 19:04 | 显示全部楼层
变量一定要小心,不能乱用。
鹿鼎计 发表于 2024-5-22 08:56 | 显示全部楼层
结果居然是报错,语法有问题吧
 楼主| 21mengnan 发表于 2024-5-23 15:10 | 显示全部楼层

这么做就对了,说明了一个问题,不管在全局还是在局部。定义变量的时候可以赋值。但是不可以孤立使用,孤立使用变量那么需要在函数内进行。否则就错误。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 21mengnan 发表于 2024-5-23 15:10 | 显示全部楼层
上次发帖时候睡着了。没能写完。
gdszzyq 发表于 2024-5-24 13:58 | 显示全部楼层
bioe 发表于 2024-5-25 13:41 | 显示全部楼层
学习学习
玛尼玛尼哄 发表于 2024-5-25 20:02 | 显示全部楼层
那个应该是语法问题,因为在函数之外的全局变量定义有个原则,就是定义时候可以赋值,一定是定义时候赋值。其他时候赋值就是报错了。
玛尼玛尼哄 发表于 2024-5-25 20:03 | 显示全部楼层
另外在全局的存储顺序和函数内的存储顺序,真是不一样。
看别人照片 发表于 2024-5-27 09:15 | 显示全部楼层
C语言中最不好弄懂的就是指针
杀神归来了 发表于 2024-5-27 17:25 | 显示全部楼层
wooda 发表于 2024-6-1 17:11 | 显示全部楼层
管他了,程序能跑起来就不要乱动
guyan1987 发表于 2024-6-3 08:15 | 显示全部楼层
wushaorong88 发表于 2024-6-3 08:44 | 显示全部楼层
ggjj 发表于 2024-6-3 22:24 | 显示全部楼层
uptown 发表于 2024-6-4 09:25 | 显示全部楼层
全局变量在程序开始执行前就已经分配了内存,并且这些变量在整个程序的执行期间都存在。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

1151

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部