首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个关于结构体和字符数组的有关问题

2013-11-01 
一个关于结构体和字符数组的问题#includeiostreamusing namespace stdstruct A{int nchar s}main ()

一个关于结构体和字符数组的问题
#include<iostream>
using namespace std;
struct A
{
int n;
char s;
};
main (){
char *str={"hello,world"};
struct A *a=(struct A*)str;
printf("%c\n",a->s);

}

输出的是o


为什么
#include<iostream>
using namespace std;
struct A
{
int n;
char s[1];
};
main (){
char *str={"hello,world"};
struct A *a=(struct A*)str;
printf("%c\n",a->s);

}
输出的是$ struct c 字符
[解决办法]
第一个
INT N占用4字节,char类型占用1个字节
所以打招呼依照顺序,S会得到?

第二个
一样,INT N,占用4字节,
但是char类型[1]是阵列,再结构中所放的是指标,所以是4字节
依照顺序,S[1]的内容是“邻,窝”转成十六进制的值所指向的位置
[解决办法]
1. 邪恶的类型转换,后果自负!!

char *str={"hello,world"};
struct A *a=(struct A*)str;


2. 
struct A
{
int n;
char s;
};

A a;
//a.s是对象a的成员s.的值,类型是char
printf("%c", a.s);//这里相当于int t = a.s; char c = (char)t; 最后输出c



3. 
struct A
{
int n;
char s[1];
};

A a;
//a.s是对象a的成员s的地址,类型是char*
printf("%c", a.s);//这里相当于int t = (int)a.s; char c = (char)t; 最后输出c

热点排行
Bad Request.