您的位置:首页 > 其它

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

2014-11-08 21:51 363 查看
#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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐