ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言从入门到入土(入门篇)结构体

2021-11-20 10:02:52  阅读:164  来源: 互联网

标签:struct 访问 int 成员 C语言 入门篇 入土 变量 结构


目录

结构体

1. 结构体的声明

1.1 结构的基础知识

1.2 结构的声明

1.3 结构成员的类型

1.4 结构体变量的定义和初始化

2. 结构体成员的访问

3. 结构体传参


谁都不能阻挡你成为优秀的人。

结构体

1. 结构体的声明

1.1 结构的基础知识

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

1.2 结构的声明

struct tag
{
 member-list; 
}variable-list;
例如描述一个学生:

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};//结构体嵌套初始化

2. 结构体成员的访问

结构体变量访问成员 结构变量的成员是通过点操作符( )访问的。点操作符接受两个操作数。 例如:

我们可以看到 s 有成员 name 和 age ; 那我们如何访问 s 的成员?
struct S s;
strcpy(s.name, "zhangsan");//使用.访问name成员
s.age = 20;//使用.访问age成员

 

 

结构体指针访问指向变量的成员 有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。 那该如何访问成员。 如下:

 

3. 结构体传参

直接上代码:
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 函数。 原因: 函数传参的时候,参数是需要压栈的。 (这个这两天会出一篇文章专门讲这个哈!) 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的 下降。 结论: 结构体传参的时候,要传结构体的地址。 

今天的内容就到这里了哈!!!

要是认为作者有一点帮助你的话!

就来一个点赞加关注吧!!!当然订阅是更是求之不得!

最后的最后谢谢大家的观看!!!

你们的支持是作者写作的最大动力!!!

下期见哈!!!

标签:struct,访问,int,成员,C语言,入门篇,入土,变量,结构
来源: https://blog.csdn.net/weixin_62700590/article/details/121415237

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有