结构体变量名表示什么 您所在的位置:网站首页 结构体的变量名表示什么 结构体变量名表示什么

结构体变量名表示什么

2024-04-20 16:57| 来源: 网络整理| 查看: 265

一般类型如int,char,float等定义的变量a,那么调用a时用的就是a的值,而结构体变量呢?书上说结构体变量名不是结构体变量的首地址,为了测试调用结构体变量名是什么,本人写了个小程序 #include typedef struct{ char name[20]; int value; }Student; int main() { Student a={"abc",1}; printf("%d %s %d\n",a,a.name,a.value); printf("%x %x %x",a,&a.name,&a.value); return 0; }

然而第一个输出结果后面两个值为null和0,与预期的不符合,本人本以为后面两个会输出abc和1的,然后本人逐步修改,发现把前面输出的a去掉,让它只输出两个值,这回正确了。 第二个输出一样,加上a后面两个就是0,去掉就是正常的地址,这是为何呢? 直接调用输出结构体变量到底是什么意义?或它根本没有意义? 以下是测试图结构体变量名表示什么结构体变量名表示什么结构体变量名表示什么结构体变量名表示什么

解决方案

10

%x 是输出整数值的格式,所以会把结构体变量a当作一个整型值,结果就是强制转换a的前4个字节为整型值, 原因是name里的指针地址是递增的,而变量的存储方式是低字节序的,所以int的16进制值是636261,接着是会把接着的2个整型值(分别是4个字节,name有20个字节)输出,0,0, 编译器会把a当作一个变量的集合,而不是一个单独的变量. #include  #include  typedef struct{     char name[20];     int value; }Student;   int main() { // a=0x61,b=0x62,c=0x63,0x0,0x0,,,,     Student a={"abc",1};     printf("%s %d\n",a.name,a.value);     printf("%x,%x\n",&a.name,&a.value);     printf("%x,%x,%x\n",a);     std::cout 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有