[学习资料]

指针在全局变量与局部变量之间的差异

[复制链接]
13894|70
手机看帖
扫描二维码
随时随地手机跟帖
21mengnan|  楼主 | 2024-5-6 20:32 | 显示全部楼层 |阅读模式
本帖最后由 21mengnan 于 2024-5-23 15:06 编辑
#include <stdio.h>

int main()
{

        int a=10;
        int *p1;
        p1=&a;
   printf("Hello, World! \n");
   printf("a=%d \n",a);
   printf("p1=%x \n",p1);
   printf("*p1=%d \n",*p1);
   return 0;
}


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

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



使用特权

评论回复
21mengnan|  楼主 | 2024-5-6 20:32 | 显示全部楼层
为什么会这样呢?
有没有人想过?

使用特权

评论回复
21mengnan|  楼主 | 2024-5-6 20:33 | 显示全部楼层
如果这样操作呢?
#include <stdio.h>
int a=10;
int *p1;

int main()
{
        p1=&a;
   printf("Hello, World! \n");
   printf("a=%d \n",a);
   printf("p1=%x \n",p1);
   printf("*p1=%d \n",*p1);
   return 0;
}

使用特权

评论回复
weifeng90| | 2024-5-7 08:07 | 显示全部楼层
变量得应用要小心,否则把自己带坑里。

使用特权

评论回复
rgjinxuan| | 2024-5-20 17:24 | 显示全部楼层
TKS

使用特权

评论回复
勇敢的大白菜| | 2024-5-21 19:04 | 显示全部楼层
变量一定要小心,不能乱用。

使用特权

评论回复
鹿鼎计| | 2024-5-22 08:56 | 显示全部楼层
结果居然是报错,语法有问题吧

使用特权

评论回复
21mengnan|  楼主 | 2024-5-23 15:10 | 显示全部楼层
61106664eeba10bd90.png
这么做就对了,说明了一个问题,不管在全局还是在局部。定义变量的时候可以赋值。但是不可以孤立使用,孤立使用变量那么需要在函数内进行。否则就错误。

使用特权

评论回复
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 | 显示全部楼层
xuexi

使用特权

评论回复
wushaorong88| | 2024-6-3 08:44 | 显示全部楼层

使用特权

评论回复
ggjj| | 2024-6-3 22:24 | 显示全部楼层
看看

使用特权

评论回复
uptown| | 2024-6-4 09:25 | 显示全部楼层
全局变量在程序开始执行前就已经分配了内存,并且这些变量在整个程序的执行期间都存在。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

926

帖子

1

粉丝