本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第1章,第1.4节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看
指针的编程艺术(第二版)谈完了数组后,接着讨论结构。结构是由多个不同数据类型所组成的一个集合体。我们以范例addressStruct来加以说明。
范例addressStruct
/* addressStruct.c */ #include <stdio.h> #include <stdlib.h> int main( ) { /* 声明结构变量 */ struct employee { char id[7]; /* ID号码 */ char name[20]; /* 员工姓名 */ int salary; /* 所得薪资 */ }; /* 定义结构变量,并设定其初值 */ struct employee manager = {"D12345", "Peter", 35000}; /* 输出结构变量的内存地址 */ printf("&manager= %x\n", &manager); printf("manager.id= %x\n", manager.id); printf("manager.name= %x\n", manager.name); printf("&manager.salary= %x\n\n", &manager.salary); /* 输出结构变量的值 */ printf("manager.id= %s\n", manager.id); printf("manager.name= %s\n", manager.name); printf("manager.salary= %d\n\n", manager.salary); system("PAUSE"); return 0; }输出结果
从输出结果得知结构变量名称与结构的第一个元素id的地址是相同的,都是12ff40,由于id占7字节,所以结构的第二个元素name的地址为12ff47,由于name字符串占20字节,所以结构第三个元素的地址为12ff5c。
该范例如果以%p代替%x输出内存地址,则会补00,以满足32位。如输出&manager,则输出结果为0012FF40,你可以试试看。
相关资源:敏捷开发V1.0.pptx