全局结构体赋值
下面的程序报错:
#include <stdio.h>
struct node{
char c;
int a;
}n;
n.c='m';
n.a=4;
int main(){
printf("%c %d\n",n.c,n.a);
}
错误信息:
[Error] expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
指示的代码段是n.c='m';
,说明不能在函数外给全局结构体的成员赋值。上网查阅相关的信息,找到的解释是:
n.c='m'
是赋值语句,不是初始化语句,因此只能在函数中使用。
但是当我对基本数据类型做类似操作,如下面程序所示,却不会出错:
#include <stdio.h>
int a;
a=2;
int main(){
printf("%d\n",a);
}
难道a=2;
不是赋值语句吗?结构体和基本数据类型的区别在哪里?