鱼C论坛

 找回密码
 立即注册
查看: 1557|回复: 6

[已解决]又是关于外部变量 和一些特性

[复制链接]
发表于 2018-9-16 11:41:03 | 显示全部楼层 |阅读模式

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

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

x
QQ截图20180916105024.jpg QQ截图20180916105047.jpg

关于这个 书上所说的是:外部变量未初始化的情况下会自动初始化为0;这原则也适用于外部定义的数组元素。且只能用常数表达式初始化文件作用域变量。
对于这个我理解。所以我的图一的代码会出现图二这样的错误。
QQ截图20180916105119.jpg QQ截图20180916112547.jpg
我所不能理解的在图3和图4; 按照书上所说的,我没有对 main函数里的变量a或者指针p2 用类型再次声明(例如:int a;这样就会让a变成属于main函数内的自动变量),所以此时里面的a和p2还是属于外部变量。。我试着调试也证明此时a和p2和main函数外部的变量性质一样,那么应该是属于外部变量
可是为什么同为外部变量,他却可以在main函数内部直接赋值,而图1,我放main外面的p2=str;这样就不可以
最佳答案
2018-9-16 13:07:22
C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局区定义的变量进行申请内存空间及初始化,这个是在全局区完成的.
QQ截图20180916113729.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-16 12:45:09 From FishC Mobile | 显示全部楼层
不是外部和内部,是全局与局部。作用域比较大,所以可以被改变。
char const * p2 = str;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-16 13:00:01 | 显示全部楼层
claws0n 发表于 2018-9-16 12:45
不是外部和内部,是全局与局部。作用域比较大,所以可以被改变。
char const * p2 = str;

外部变量是书上对他的称呼,书上有说也称呼全局变量等,直接指针初始化成str,这个我知道,我是想问为什么在main函数外部不可以 char *p2;   p2=str;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 13:07:22 | 显示全部楼层    本楼为最佳答案   
C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局区定义的变量进行申请内存空间及初始化,这个是在全局区完成的.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 13:19:52 From FishC Mobile | 显示全部楼层
moc 发表于 2018-9-16 13:07
C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局 ...

可以运算吧,只不过是在编译时,而不是执行时。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 13:59:28 | 显示全部楼层
claws0n 发表于 2018-9-16 13:19
可以运算吧,只不过是在编译时,而不是执行时。

不能的,你可以试一试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-16 14:07:37 | 显示全部楼层
moc 发表于 2018-9-16 13:07
C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局 ...

哦哦哦,对对对,调试的时候好像也是从main函数开始的,怪不得_(:з」∠)_谢谢谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-30 09:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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