这样给全局变量为何不可?

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:06:54
#include <stdio.h>
#include <stdlib.h>

char a[20];
char *p;
p = a;

int main()
{
printf("The Address of array-A is %p\n",&p);
return 0;
}

PS:如果将char *p;和p = a;这两条语句合并成char *p = a;就可以编译成功!

因为p=a是一条赋值操作的语句,必须放在某个函数体中,所以编译不过.
而char *p=a;是一条变量定义同时初始化改变量的语句,可以放到函数体之外.

main()外面只能进行函数定义或声明,以及一些预处理,宏之类的
p=a,是表达式语句,不能写在外面
char *p = a;这是定义指针变量,并初始化,看做是定义,所以可以通过