《指针的编程艺术(第二版)》一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;
}

输出结果


6ea25f8d78ee20524ed97c1ff2eb98765ca91707

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

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

相关文章
|
存储 C++
04-深入了解isa指针以及内部结构
04-深入了解isa指针以及内部结构
87 0
04-深入了解isa指针以及内部结构
|
存储 C语言
《C和指针》读书笔记(第十章 结构和联合)(下)
《C和指针》读书笔记(第十章 结构和联合)(下)
|
存储 C语言 C++
《C和指针》读书笔记(第十章 结构和联合)(上)
《C和指针》读书笔记(第十章 结构和联合)(上)
每日一题—— 判断一个链表是否为回文结构(快慢指针,对撞指针)
每日一题—— 判断一个链表是否为回文结构(快慢指针,对撞指针)
|
存储 XML JSON
【C语言】结构体——我就是秩序的创建者!(结构体数组、结构体指针、嵌套、匿名、字面量、伸缩型数组、链式结构)
【C语言】结构体——我就是秩序的创建者!(结构体数组、结构体指针、嵌套、匿名、字面量、伸缩型数组、链式结构)
指向结构指针(C Primer Plus 第六版)
指向结构指针(C Primer Plus 第六版)
83 0
|
Java .NET C#
《指针的编程艺术(第二版)》一导读
指针的编程艺术(第二版) C语言的特色就是“指针”(Pointer),这是个让人又爱又难受的主题。有一句话是这么说的,学过C,而不会指针,那只能说你看过C。熟悉指针的人,会将指针比喻成天上那一颗最美的星星,而让不懂指针的人,头上冒星星,同样是星星,但却是完全不同的境遇。
1635 0
|
存储 缓存 Java
Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs(下)
Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs(下)
Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs(下)
|
存储 缓存 Java
Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs(上)
Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs(上)
Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs(上)
|
C语言
【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
916 0
【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )