成都山而网站建设公司,中国建设银行网站网上银行,梅州做网站多少钱,网站搭建交流群文章目录 第七章结构体1.结构体的声明1.1结构的基础知识1.2结构的声明1.3结构成员的类型1.4结构体变量的定义和初始化 2.结构体成员的访问2.1结构体变量访问成员2.2结构体指针访问指向变量的成员 3.结构体传参配套练习#xff1a; 第七章结构体 1.结构体类型的声明 2.结构体初… 文章目录 第七章结构体1.结构体的声明1.1结构的基础知识1.2结构的声明1.3结构成员的类型1.4结构体变量的定义和初始化 2.结构体成员的访问2.1结构体变量访问成员2.2结构体指针访问指向变量的成员 3.结构体传参配套练习 第七章结构体 1.结构体类型的声明 2.结构体初始化 3.结构体成员访问 4.结构体传参 1.结构体的声明
1.1结构的基础知识 结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明
typedef struct Stu
{char name[20];char sex[8];int age;char id[10];
}Stu;1.3结构成员的类型
类型可以是标量、数组、指针甚至是其他结构体。
1.4结构体变量的定义和初始化
如何定义和初始化变量
struct Stu
{char name[20]; //局部变量char sex[5];int age;char id[10];
}s; //全局变量struct Stu s1; //定义结构体变量s1
struct Stu s2 { 小明,男,20,aw11140551 }; //初始化struct Point
{int x;int y;
};struct Node
{int data;struct Point p;struct Node* nx;
}n1 { 1,{6,7}, NULL}; //结构体嵌套初始化struct Node n2 { 2,{9,10},NULL }; //结构体嵌套初始化2.结构体成员的访问
2.1结构体变量访问成员
通过点操作符(.)访问的。点操作符接受两个操作数。
#include stdio.hstruct Stu
{char name[20]; int age;char id[10];
};int main()
{struct Stu s { 小明,18,ad1254656 };printf(%s %d %s,s.name,s.age,s.id);return 0;
}2.2结构体指针访问指向变量的成员
有时候得到的不是一个结构体变量而是指向一个结构体的指针。
#include stdio.hstruct Stu
{char name[20]; int age;char id[10];
};void print(struct Stu* pa)
{printf(%s %d %s\n,pa-name,pa-age,pa-id);printf(%s %d %s\n, (*pa).name,(*pa).age,(*pa).id);
}int main()
{struct Stu s { 小明,18,ad1254656 };print(s);return 0;
}3.结构体传参
#include stdio.hstruct Stu
{char name[20]; int age;char id[10];
};void print1(struct Stu s)
{printf(%s d %s\n, s.name,s.age,s.id);
}void print2(struct Stu* pa)
{printf(%s %d %s\n,pa-name,pa-age,pa-id);printf(%s %d %s\n, (*pa).name,(*pa).age,(*pa).id);
}int main()
{struct Stu s { 小明,18,ad1254656 };print1(s); //传结构体print2(s); //传地址return 0;
}上面的代码中有两个print函数首选print2函数。
原因 函数传参的时候参数需要压栈。 如果传递一个结构体对象时结构体过大的话参数压栈的系统开销比较大会导致性能的下降。 总结
结构体传参的时候要传结构体的地址。
上一章C语言入门学习 — 6.指针
配套练习
C语言练习题110例(一) C语言练习题110例(二 C语言练习题110例(三) C语言练习题110例(四) C语言练习题110例(五) C语言练习题110例(六) C语言练习题110例(七) C语言练习题110例(八) C语言练习题110例(九) C语言练习题110例(十) C语言练习题110例(十一)