鱼C论坛

 找回密码
 立即注册
查看: 1456|回复: 13

[已解决]求助关于指针的问题

[复制链接]
发表于 2017-4-30 09:45:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
在vs2015中,使用如下代码
int a=2000;
int *b ;
b = &a;
会出现错误,

但是:
int a=2000;
int *b = &a;
却不会出现错误
这是为什么啊?

最佳答案
2017-4-30 11:43:56
632076202 发表于 2017-4-30 10:39

int a=2000;
int *b ;



int a=2000;
int *b ;
可以放在main函数外面


b = &a;
不可以,不要问我为什么(这里应该是所有函数的外面)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-30 10:08:05 | 显示全部楼层
同样是vs2015实测我的没问题啊,可以描述的再详细点吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 10:09:55 | 显示全部楼层
看图
testc.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-30 10:29:52 | 显示全部楼层

你放在main函数外面试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-30 10:39:01 | 显示全部楼层
newu 发表于 2017-4-30 10:08
同样是vs2015实测我的没问题啊,可以描述的再详细点吗?


int a=2000;
int *b ;
b = &a;
放在main函数外面好像就不行,你试试

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 11:43:56 | 显示全部楼层    本楼为最佳答案   
632076202 发表于 2017-4-30 10:39

int a=2000;
int *b ;



int a=2000;
int *b ;
可以放在main函数外面


b = &a;
不可以,不要问我为什么(这里应该是所有函数的外面)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 11:45:51 | 显示全部楼层
#include <stdio.h>

int a = 2000;
int *b;

int main(void)
{
        
        b = &a;

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 11:47:33 | 显示全部楼层
#include <stdio.h>

int a = 2000;
int *b;


//这下,b = &a; 也放在main函数的外面了
void foo(void)
{
        b = &a;
}


int main(void)
{

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-30 12:06:40 | 显示全部楼层
人造人 发表于 2017-4-30 11:43
int a=2000;
int *b ;
可以放在main函数外面

这让我忍不住想要问为什么额?。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-30 12:08:18 | 显示全部楼层
人造人 发表于 2017-4-30 11:43
int a=2000;
int *b ;
可以放在main函数外面

是c语言的潜规则,还是本来说明了这样的语法格式?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 12:08:30 | 显示全部楼层
632076202 发表于 2017-4-30 12:06
这让我忍不住想要问为什么额?。。。。。。


你告诉我,
这叫什么
int a=2000;
int *b ;

这又叫什么?
b = &a;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-30 15:15:32 | 显示全部楼层
人造人 发表于 2017-4-30 12:08
你告诉我,
这叫什么
int a=2000;

int *b;是声明一个指针变量b,
b=&a;是取变量a的地址放到b之中啊,
不是这样么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 16:15:54 | 显示全部楼层
632076202 发表于 2017-4-30 15:15
int *b;是声明一个指针变量b,
b=&a;是取变量a的地址放到b之中啊,
不是这样么?

你把 b = &a;
放到函数外面,打算让 b = &a; 什么时候执行?

int *b; 放到函数外面,声明并定义了一个全局变量
int *b = NULL; 放到函数外面,声明并定义并初始化了一个全局变量

b = &a; 不能放到函数外面,这是一条赋值语句,需要放在函数内部执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-30 16:40:05 | 显示全部楼层
人造人 发表于 2017-4-30 16:15
你把 b = &a;
放到函数外面,打算让 b = &a; 什么时候执行?

噢噢,明白了,非常感谢您的回答,谢谢您,为我解答了很多疑惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表