打印
[学习资料]

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

[复制链接]
8188|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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;
}


以上程序的运行结果
那么将以上函数中变量定义为全局变量效果如何呢?
#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 | 只看该作者
变量得应用要小心,否则把自己带坑里。

使用特权

评论回复
5
rgjinxuan| | 2024-5-20 17:24 | 只看该作者
TKS

使用特权

评论回复
6
勇敢的大白菜| | 2024-5-21 19:04 | 只看该作者
变量一定要小心,不能乱用。

使用特权

评论回复
7
鹿鼎计| | 2024-5-22 08:56 | 只看该作者
结果居然是报错,语法有问题吧

使用特权

评论回复
8
21mengnan|  楼主 | 2024-5-23 15:10 | 只看该作者

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

使用特权

评论回复
9
21mengnan|  楼主 | 2024-5-23 15:10 | 只看该作者
上次发帖时候睡着了。没能写完。

使用特权

评论回复
10
gdszzyq| | 2024-5-24 13:58 | 只看该作者
看看

使用特权

评论回复
11
bioe| | 2024-5-25 13:41 | 只看该作者
学习学习

使用特权

评论回复
12
玛尼玛尼哄| | 2024-5-25 20:02 | 只看该作者
那个应该是语法问题,因为在函数之外的全局变量定义有个原则,就是定义时候可以赋值,一定是定义时候赋值。其他时候赋值就是报错了。

使用特权

评论回复
13
玛尼玛尼哄| | 2024-5-25 20:03 | 只看该作者
另外在全局的存储顺序和函数内的存储顺序,真是不一样。

使用特权

评论回复
14
看别人照片| | 2024-5-27 09:15 | 只看该作者
C语言中最不好弄懂的就是指针

使用特权

评论回复
15
杀神归来了| | 2024-5-27 17:25 | 只看该作者

使用特权

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

本版积分规则

63

主题

926

帖子

1

粉丝