又是关于外部变量 和一些特性
关于这个 书上所说的是:外部变量未初始化的情况下会自动初始化为0;这原则也适用于外部定义的数组元素。且只能用常数表达式初始化文件作用域变量。
对于这个我理解。所以我的图一的代码会出现图二这样的错误。
我所不能理解的在图3和图4; 按照书上所说的,我没有对 main函数里的变量a或者指针p2 用类型再次声明(例如:int a;这样就会让a变成属于main函数内的自动变量),所以此时里面的a和p2还是属于外部变量。。我试着调试也证明此时a和p2和main函数外部的变量性质一样,那么应该是属于外部变量
可是为什么同为外部变量,他却可以在main函数内部直接赋值,而图1,我放main外面的p2=str;这样就不可以
不是外部和内部,是全局与局部。作用域比较大,所以可以被改变。
char const * p2 = str; claws0n 发表于 2018-9-16 12:45
不是外部和内部,是全局与局部。作用域比较大,所以可以被改变。
char const * p2 = str;
外部变量是书上对他的称呼,书上有说也称呼全局变量等,直接指针初始化成str,这个我知道,我是想问为什么在main函数外部不可以 char *p2; p2=str; C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局区定义的变量进行申请内存空间及初始化,这个是在全局区完成的. moc 发表于 2018-9-16 13:07
C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局 ...
可以运算吧,只不过是在编译时,而不是执行时。 claws0n 发表于 2018-9-16 13:19
可以运算吧,只不过是在编译时,而不是执行时。
不能的,你可以试一试 moc 发表于 2018-9-16 13:07
C语言的执行是从main()函数开始执行的,在执行main函数之前是不能进行赋值、算术运算等操作的,只能对全局 ...
哦哦哦,对对对,调试的时候好像也是从main函数开始的,怪不得_(:з」∠)_谢谢谢谢
页:
[1]