绵阳房产网站建设,网站建设如何提高转化率,正规网站建设代理,网站建设招标范文目录一、前言二、结构体的声明1、结构的基础知识2、结构的声明3、结构体成员的类型4、结构体变量的定义和初始化三、结构体成员的访问四、结构体传参一、前言
本人是一名小白#xff0c;这一篇是记录我C语言学习中的结构体的所学所得#xff0c;仅为简单的认识下C语言中的各…
目录一、前言二、结构体的声明1、结构的基础知识2、结构的声明3、结构体成员的类型4、结构体变量的定义和初始化三、结构体成员的访问四、结构体传参一、前言
本人是一名小白这一篇是记录我C语言学习中的结构体的所学所得仅为简单的认识下C语言中的各个知识。
二、结构体的声明
1、结构的基础知识
结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量。
2、结构的声明
struct tag
{member-list;
}variable-list;例如描述一个学生
typedef struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}Stu//分号不能丢3、结构体成员的类型
结构的成员可以是标量、数组、指针甚至是其他结构体。
4、结构体变量的定义和初始化
struct Point
{int x;int y;
}p1; //声明类型的同时定义变量p1struct Point p2; //定义结构体变量p2
//初始化定义变量的同时赋初值。struct Point p3 { 1,2 };struct Stu//类型声明
{char name[15];//名字int age;//年龄
};struct Stu s { zhangsan, 20 };//初始化struct Node
{int data;struct Point p;struct Node* next;
}n1 { 10, {4,5}, NULL }; //结构体嵌套初始化
struct Node n2 { 20, {5, 6}, NULL };//结构体嵌套初始化三、结构体成员的访问
结构体变量访问成员 结构变量的成员是通过点操作符.访问的。点操作符接受两个操作数。 例如 我们可以看到 s 有成员 name 和 age 那我们如何访问s的成员
struct S s;
strcpy(s.name, zhangsan);//使用.访问name成员
s.age 20;//使用.访问age成员结构体指针访问指向变量的成员 有时候我们得到的不是一个结构体变量而是指向一个结构体的指针。 那该如何访问成员。 如下
#include stdio.hstruct Stu
{char name[20];int age;
};void print(struct Stu* s)
{printf(name %s,age %d\n, (*s).name, (*s).age);printf(name %s,age %d\n, s-name, s-age);
}int main()
{struct Stu s { Lihua,20 };print(s);return 0;
}运行结果
四、结构体传参
struct S
{
int data[1000];
int num;
};
struct S s {{1,2,3,4}, 1000};
//结构体传参
void print1(struct S s)
{
printf(%d\n, s.num);
}
//结构体地址传参
void print2(struct S* ps)
{
printf(%d\n, ps-num);
}
int main()
{
print1(s); //传结构体
print2(s); //传地址
return 0;
}上面的 print1 和 print2 函数哪个好些 答案是首选print2函数。 原因函数传参的时候参数是需要压栈的。 如果传递一个结构体对象的时候结构体过大参数压栈的的系统开销比较大所以会导致性能的下降。 结论 结构体传参的时候要传结构体的地址.