首页 结构体、指针(精炼)

结构体、指针(精炼)

举报
开通vip

结构体、指针(精炼)nullnull 结构体与指针null1.1 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体---- 自定义数据类型 结构体类型定义struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. };成员类型可以是 基本型或构造型struct是关键字, 不能省略合法标识符 可省:无名结构体null例 struct student ...

结构体、指针(精炼)
nullnull 结构体与指针null1.1 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体---- 自定义数据类型 结构体类型定义struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. };成员类型可以是 基本型或构造型struct是关键字, 不能省略合法标识符 可省:无名结构体null例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; 结构体类型定义描述结构 的组织形式,不分配内存结构体类型定义的作用域null1.2 结构体变量的定义 1.先定义结构体类型,再定义结构体变量 一般形式: 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30];}; struct student stu1,stu2; struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; …………….}; struct 结构体名 变量名表列;null例 #define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; float score; char addr[30]; }; STUDENT stu1,stu2; null2.定义结构体类型的同时定义结构体变量 一般形式:struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列;例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; null3.直接定义结构体变量 一般形式:struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列;例 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; 用无名结构体直接定义 变量只能一次null4.说明 结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期 nullnull 1.3 结构体变量的引用 1.引用规则 结构体变量不能整体引用,只能引用变量成员 可以将一个结构体变量赋值给另一个结构体变量 结构体嵌套时逐级引用引用方式: 结构体变量名.成员名nullnullnull1.4 结构体变量的初始化 1.形式一:struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 结构体变量={初始数据};例 struct student { int num; char name[20]; char sex; int age; char addr[30]; }; struct student stu1={112,"Wang Lin”,‘M’,19, “20 Beijing Road”};null2.形式二:struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }结构体变量={初始数据};例 struct student { int num; char name[20]; char sex; int age; char addr[30]; }stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”}; null3.形式三:struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }结构体变量={初始数据};例 struct { int num; char name[20]; char sex; int age; char addr[30]; }stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”}; null1.5 结构体数组 1.结构体数组的定义 三种形式:形式一: struct student { int num; char name[20]; char sex; int age; }; struct student stu[2];null形式二: struct student { int num; char name[20]; char sex; int age; }stu[2];形式三: struct { int num; char name[20]; char sex; int age; }stu[2];null2.结构体数组初始化null顺序初始化: struct student { int num; char name[20]; char sex; int age; }; struct student stu[ ]={100,“Wang Lin”,‘M’,20, 101,“Li Gang”,‘M’,19, 110,“Liu Yan”,‘F’,19}; null3.结构体数组引用引用方式: 结构体数组名[下标].成员名null例 统计后选人选票struct person { char name[20]; int count; }leader[3]={“Li”,0,“Zhang”,0,”Wang“,0}; main() { int i,j; char leader_name[20]; for(i=1;i<=10;i++) { scanf("%s",leader_name); for(j=0;j<3;j++) if(strcmp(leader_name,leader[j].name)==0) leader[j].count++; } for(i=0;i<3;i++) printf("%5s:%d\n",leader[i].name,leader[i].count); }null2 指针地址指针变量:用当前变量来存放另一个变量的地址,则当前变量是一个~。指针变量的值:指针变量中存放的值是地址。指针变量的定义:      类型标示符  *标示符例: int *pointer *表示该变量是一个指针变量    指针变量名为pointer,不是*pointer指针变量的引用指针变量的引用运算符: 1. &    取地址运算符       后跟目标,其结果是一个指针 2.  *     指针运算符      后跟指针,其结果是目标null例: main() { int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1=&a; pointer_2=&b; printf(“%d,%d\n”,a,b); printf(“%d,%d\n”, *pointer_1,*pointer_2); }运行结果:100,10      100,10null 3 结构体和指针 1.指向结构体变量的指针 定义形式:struct 结构体名 *结构体指针名; 例 struct student *p;存放结构体变量在内存的起始地址null使用结构体指针变量引用成员形式指向运算符 优先级: 1 结合方向:从左向右例 指向结构体的指针变量例 int n; int *p=&n; *p=10;  n=10nullmain() { struct student { long int num; char name[20]; char sex; float score; }stu_1,*p; p=&stu_1; stu_1.num=89101; strcpy(stu_1.name,“Li Lin”); //把字符串2拷贝到字符串1中 p->sex='M'; p->score=89.5; printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%f\n", (*p).num,p->name,stu_1.sex,p->score); }null1.指向结构体数组的指针例 指向结构体数组的指针struct student { int num; char name[20]; char sex; int age; }stu[3]={{10101,"Li Lin",'M',18}, {10102,"Zhang Fun",'M',19}, {10104,"Wang Min",'F',20}}; main() { struct student *p; for(p=stu;pnum,p->name,p->sex,p->age); }null动态存储分配 参看189页 1. malloc 2. free调用形式 (类型说明符 *)malloc (size)调用形式 free (指针变量)null4 用typedef定义类型 参看207页 功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name;例 typedef int INTEGER;类型定义语句关键字已有数据类型名用户定义的类型名例 typedef float REAL;类型定义后,与已有类型一样使用null例 INTEGER a,b,c; REAL f1,f2; 说明: 1.typedef 没有创造新数据类型 2.typedef 是定义类型,不能定义变量 3.typedef 与 define 不同 define typedef 预编译时处理 编译时处理 简单字符置换 为已有类型命名 定义结构体类型定义结构体类型typedef struct node { int data; int age; } LNode LNode linklist;定义新类型名LNode,它代表上面定义的是一个结构体类型, 后可以直接用LNode来定义变量。struct node { int data; int age; } typedef struct node LNode LNode linklist;nullnull#define statcksize 100 Typedef struct sqstack { int data[statcksize]; int top; }Sqstack; Sqstack *s;s->top= 0;s->data[top]=100;nullTypedef struct lnode { int data; struct lnode next; }lnode,Lstack; Lstack s; s->data=100;
本文档为【结构体、指针(精炼)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_916722
暂无简介~
格式:ppt
大小:330KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2013-09-25
浏览量:49