2345浏览器网站进入,手机版百度一下,平面设计网名,一个jsp做的购物小网站IT廉连看——C语言——结构体
一、结构体的声明
1.1 结构的基础知识 结构是一些值的集合#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明
struct tag
{member-list;
}variable-list;
例如描述一个学生#xff1a;typedef struct Stu…IT廉连看——C语言——结构体
一、结构体的声明
1.1 结构的基础知识 结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明
struct tag
{member-list;
}variable-list;
例如描述一个学生typedef struct Stu
{char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号
}Stu//分号不能丢
1.3 结构成员的类型
结构的成员可以是标量、数组、指针甚至是其他结构体。
1.4 结构体变量的定义和初始化
有了结构体类型那如何定义变量其实很简单。
struct Point
{int x;int y;
}p1; //声明类型的同时定义变量p1
struct Point p2; //定义结构体变量p2
//初始化定义变量的同时赋初值。
struct Point p3 {x, y};
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};//结构体嵌套初始化
[IT廉连看]
二、结构体成员的访问 结构体变量访问成员 结构变量的成员是通过点操作符.访问的。点操作符接受两个操作数。
例如 我们可以看到 s 有成员 name 和 age
那我们如何访问s的成员。
struct S s;
strcpy(s.name, zhangsan);//使用.访问name成员
s.age 20;//使用.访问age成员 结构体指针访问指向变量的成员 有时候我们得到的不是一个结构体变量而是指向一个结构体的指针。 那该如何访问成员。
如下
struct Stu
{char name[20];int age;
};
void print(struct Stu* ps)
{printf(name %s age %d\n, (*ps).name, (*ps).age);//使用结构体指针访问指向对象的成员printf(name %s age %d\n, ps-name, ps-age);
}
int main()
{struct Stu s {zhangsan, 20};print(s);//结构体地址传参return 0;
}
[IT廉连看]
三、结构体传参
直接上代码
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函数。
原因 函数传参的时候参数是需要压栈的。 如果传递一个结构体对象的时候结构体过大参数压栈的的系统开销比较大所以会导致性能的 下降。 结论
结构体传参的时候要传结构体的地址。
[IT廉连看]