《指针的编程艺术(第二版)》一1.4 结构

本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第1章,第1.4节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看

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;
}

输出结果


《指针的编程艺术(第二版)》一1.4 结构

从输出结果得知结构变量名称与结构的第一个元素id的地址是相同的,都是12ff40,由于id占7字节,所以结构的第二个元素name的地址为12ff47,由于name字符串占20字节,所以结构第三个元素的地址为12ff5c。

该范例如果以%p代替%x输出内存地址,则会补00,以满足32位。如输出&manager,则输出结果为0012FF40,你可以试试看。

上一篇:LOG4J输出日志到web目录的相对路径


下一篇:totem播放列表中文乱码的修复