首页 > 代码库 > 全局结构体变量的初始化以及将结构体变量转换为char类型输出问题

全局结构体变量的初始化以及将结构体变量转换为char类型输出问题

#include<stdio.h>#include<stdlib.h>struct node{ int a; int b; char c; char d; };/*struct node A;  全局变量不能在这儿进行初始化,令我震惊啊,错误让你迷茫到死  A.a=1;  A.b=2;  A.c=‘a‘;  A.d=‘c‘;*///struct node A={1,2,‘a‘,‘c‘};但是这种写法可以1:初始化和赋值不是一个概念。2:// 在全局空间(即函数体之外)只能执行数据类型、变量、函数等的定义及变量的初始化,其他任何操作都不被允许。  struct node A={1,2,a,c};// 这种写法是变量定义并初始化,允许出现在全局空间中  struct node A  A.a = 1;// 这种写法是变量赋值。不允许出现在全局空间中。而编译器会把它当做变量定义来处理,于是会报告缺少类型标识符解释来自:http://bbs.bccn.net/thread-343840-1-1.htmlvoid print(const char *obj){ printf("结构体变量A中数据成员\n");  struct node *B;  B=(struct node *)obj;  printf("%d\n",B->a);  printf("%d\n",B->b);  printf("%c\n",B->c);  printf("%c\n",B->d); }void main(){struct node A;//只能放到这儿A.a=1;A.b=2;A.c=a;A.d=c;print((char *)&A);}******************************#include<stdio.h>#include<stdlib.h>struct node{ int a; int b; char c; char d; }; void print(const char *obj){ printf("结构体变量A中数据成员\n");  struct node B;  B=(*((struct node*)obj));  printf("%d\n",B.a);  printf("%d\n",B.b);  printf("%c\n",B.c);  printf("%c\n",B.d);}void main(){struct node A;A.a=1;A.b=2;A.c=a;A.d=c;print((char *)&A);}

 

全局结构体变量的初始化以及将结构体变量转换为char类型输出问题