第十章、结构体指针与typedef的使用
2023-12-28 11:58:19
一、结构体指针? ? ? ??
一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设置一个指针变量用它指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素,从而能够通过结构体指针快速访问结构体内的每个成员。
//typedef
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct student {
int num;
char name[20];
char sex;
};
int main(void)
{
struct student s = { 1001,"wangle",'M' };
struct student sarr[3] = { 1001,"lile",'M',1005,"zhangsan",'M',1007,"lili",'F' }; //结构体数组
struct student* p; //结构体指针变量
p = &s;
printf("%d %s %c\n", (*p).num, (*p).name, (*p).sex); //(*p)变为整体等价为s
//等价于以下
printf("%d %s %c\n", p->num, p->name, p->sex); //通过结构体指针访问成员
p = sarr; //等价于p=&sarr[0],取结构体数组中第一个元素
printf("------------------------------\n");
p = p + 1; //指针偏移到结构体数组的第二个元素
printf("%d %s %c\n", p->num, p->name, p->sex);
return 0;
}
二、?typedef的使用
????????前面定义结构体变量时使用的语句是 struct student s,以这种方式来定义结构体变量有些麻烦,即每次都需要写 struct student。简单一些的定义方式可以选择使用 typedef 声明新的类型名来代替已有的类型名。
//typedef
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct student { //tupedef重命名结构体
int num;
char name[20];
char sex;
}stu, * pstu; //struct student重命名为stu,pstu等价于struct student*
typedef int INGETER; //可用于变量类型更改
int main()
{
stu s = { 0 }; //数组中的变量都是零
stu* p = &s; //定义了一个结构体指针变量
pstu p1 = &s;
INGETER num = 10; //局部变量名可以用与结构体中成员的名字相同
printf("num=%d,p->num=%d\n", num, p->num);
return 0;
}
文章来源:https://blog.csdn.net/All_are_vanity/article/details/135260417
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!