分享

嵌入式开发-C语言高级编程-共同体和typedef

 zhuxrgf 2020-08-27

1、共同体

什么是共同体:在C语方中,不同数据类型的数据可以使用共同的存储区域,这种数据类型称为共同体。 结构体中的成员在内存中是平铺的,每个成员都有自己的独立的内存空间,共同体中的成员则 是共用一块内存的,其占用内存的大小是共同体中所占空间最大的成员的类型长度。 一般形式如下:union 共同体名{ 成员列表; }例如:union person{ int age; int sex; char name;}这里定义了一个共同体类型有 unino person 字是由三个成员组成,三个成员在内存中使用共同的存储空间。由于共同体中各成员的数据长度往往不同,所以共同体变量在存储时总是按其中成员中数据长度最大的成员占用内存空间。#include <stdio.h>#include <string.h>union person{ int age; char name[10];};int main(){ union person p; printf('%ld %ld\n',sizeof(char),sizeof(int)); printf('%ld \n',sizeof(union person)); p.age =10; strcpy(p.name,'copy'); printf('%#x %s\n',p.age,p.name); printf('%p %p \n',&p.age,&p.name); return 0;}1 412 0x79706f63 copy0x7ffdeefe6b6c 0x7ffdeefe6b6c

2、typedef

在C语言中经常在定义结构体类型时使用typedef,例如typedef struct _node_{    int age;    char name[10];    struct _node_ *next;} listnode, *linklist;这里定义了两个新的数据类型 listnode 和linklist.其中listnode等价于数据类型 struct _node_linklist等价于 struct _node_ *#include <stdio.h>#include <string.h>typedef struct  person{    int age;    char name[10];}listperson, *linklist ;int main(){    listperson p1;    linklist p;    p =&p1;    p->age =10;    strcpy(p->name,'copy');    printf('%d %s \n',p->age,p->name);    return 0;}
嵌入式开发-C语言高级编程-共同体和typedef

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多