标签:struct int name stu 初识 结构 变量
可能有点繁琐,但还请你能耐心看完~~
在谈什么是结构体之前,我们先来说说为什么会有结构体这个东西,在C语言中,如果我们想创建一个整形变量,那我们可以用int,想创建一个字符变量,可以用char,想创建一个小数,可以用float或者double,但是如果我们想描述一个人,或者一本书,该怎么办呢?就拿人来说吧,描述一个人,需要他的姓名、性别、年龄等等,这些变量不是同一个类型的,所以我们无法用单纯的int或者double等等关键字来创建,所以我们需要一种变量类型可以满足各种类型的变量,于是乎结构体就来但此重任了。
那什么是结构体呢?结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。其成员可以说标量、数组、指针、甚至是另外一个结构体。
1.结构体的声明
在使用结构体之前,需要声明,格式如下:
struct stu
{
char name[20];
char gender[10];
int age;
};
int main()
{
struct stu s = { "hahaha","man",20 };
return 0;
}
其中struct为关键字,stu为结构体的名称,name、gender和age为结构体的成员变量,main函数中定义了结构体变量s并为其赋初值。
2.还有两种型式
struct stu //1
{
char name[20];
char gender[10];
int age;
}s1;
typedef struct stu //2
{
char name[20];
char gender[10];
int age;
}stu;
stu s2 = { "lalala","women",18 };
形式1括号后的s1是变量,类似于前面变量s,可以直接创建,但是还是需要对其进行赋值;
形式2中要保证两个stu完全一样,因为这是格式要求,并且也不能在最后进行创建变量,但是这种形式创建变量时不需要再加上关键字struct。
3.访问成员变量
当我们需要访问成员变量的时候,需要用到.(点)这个符号,访问格式如下:
printf("%s ", s.name);
printf("%s ", s.gender);
printf("%d ", s.age);
4.结构体传参
我们知道传参的形式有传值和传址,结构体也不例外,直接上代码:
void print1(struct stu s)
{
printf("%s\n", s.name);
}
void print2(struct stu* s)
{
printf("%s\n", s->name);
}
int main()
{
struct stu s = { "hahaha","man",20 };
print1(s);
print2(&s);
return 0;
}
这两种传参方式都能很好的把结果打印出来,细心的人会发现传值和传址的访问成员变量的方式不一样,传值访问用.(点)这个符号,传址访问用->,除此之外,传址(&s)会比传值(s)更节省空间,传值是传的整个结构体的大小,而传值是将结构体的地址传过去,地址的大小为4或8个字节,如果结构体成员较多的话,传址会更节省空间。
标签:struct,int,name,stu,初识,结构,变量 来源: https://blog.csdn.net/qq_44888950/article/details/119374855
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。