全局结构体变量的初始化以及将结构体变量转换为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.html

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); } ****************************** #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)