初级C语言 结构体

简介: 初级C语言 结构体

结构体


1.结构体类型的声明
2.结构体初始化
3.结构体成员访问
4.结构体传参

结构体:结构的成员可以是不同类型的变量,用于描述复杂对象。


1.结构体的声明


struct tag
{
  member - list;
}variable-list;


描述一个人

姓名+年龄+性别+电话号


struct People
{
  char name[20];
  int age;
  char sex[10];
  char tele[12];
};
2.结构体的初始化


用结构体类型去创建变量,并赋以初值


#include<stdio.h>
struct People
{
  char name[20];
  int age;
  char sex[10];
  char tele[12];
};
int main()
{
    //创建结构体变量P
  struct People P = { "crush",20,"男","12345665421" };//初始化
  return 0;
}


3.结构体成员访问


两种方式


1.结构体.成员名
2.结构体指针->成员名


1.结构体.成员名


#include<stdio.h>
struct People
{
  char name[20];
  int age;
  char sex[10];
  char tele[12];
};
void Print1(struct People P)
{
  printf("%s\n", P.name);
  printf("%d\n", P.age);
  printf("%s\n", P.sex);
  printf("%s\n", P.tele);
}
int main()
{
  struct People P = { "crush",20,"男","12345665421" };
  Print1(P);
  return 0;
}


45111bbd684dee9738f22d2e16388c53_d442fa50340a4081a763984b8053bda6.png


2.结构体指针->成员名


#include<stdio.h>
struct People
{
  char name[20];
  int age;
  char sex[10];
  char tele[12];
};
void Print2(struct People*ps)
{
  printf("%s\n", ps->name);
  printf("%d\n", ps->age);
  printf("%s\n", ps->sex);
  printf("%s\n", ps->tele);
}
int main()
{
  struct People P = { "crush",20,"男","12345665421" };
  Print2(&P);
  return 0;
}


e693144e4f6d132cd64ef804490f8556_f572ce9a583f4625bd60adc0b15e6b7f.png


4.结构体传参


#include<stdio.h>
struct People
{
  char name[20];
  int age;
  char sex[10];
  char tele[12];
};
void Print1(struct People P)
{
  printf("name=%s age=%d sex=%s tele=%s\n",P.name,P.age,P.sex,P.tele);
}
void Print2(struct People*ps)
{
  printf("name=%s age=%d sex=%s tele=%s\n", ps->name,ps->age,ps->sex,ps->tele);
}
int main()
{
  struct People P = { "crush",20,"男","12345665421" };
  Print1(P);
  Print2(&P);
  return 0;
}


4d710633a0f1f3a6df87369c6e1545b5_18acf180967144caba49d0d9c2f04dd8.png


总结:因为函数传参时,参数需要压栈;

如果传递结构体对象时,结构体过大,参数压栈所开辟的空间较大,会造成空间浪费,性能也会有所下降


结论:结构体传参时,应该传结构体的地址

目录
相关文章
|
2月前
|
存储 C语言
如何在 C 语言中实现结构体的深拷贝
在C语言中实现结构体的深拷贝,需要手动分配内存并逐个复制成员变量,确保新结构体与原结构体完全独立,避免浅拷贝导致的数据共享问题。具体方法包括使用 `malloc` 分配内存和 `memcpy` 或手动赋值。
45 10
|
2月前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。
|
2月前
|
编译器 C语言
共用体和结构体在 C 语言中的优先级是怎样的
在C语言中,共用体(union)和结构体(struct)的优先级相同,它们都是用户自定义的数据类型,用于组合不同类型的数据。但是,共用体中的所有成员共享同一段内存,而结构体中的成员各自占用独立的内存空间。
|
2月前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
2月前
|
编译器 C语言 C++
C语言结构体
C语言结构体
28 5
|
2月前
|
C语言
C语言结构体链式结构之有头单链表
文章提供了一个C语言实现的有头单链表的完整代码,包括创建链表、插入、删除和打印等基本操作。
31 1
|
2月前
|
C语言
初识C语言6——结构体
初识C语言6——结构体
18 3
|
2月前
|
存储 编译器 C语言
【C语言】探索结构体基础知识:简明概要
【C语言】探索结构体基础知识:简明概要
|
2月前
|
编译器 Linux C语言
C语言 之 结构体超详细总结
C语言 之 结构体超详细总结
21 0
|
2月前
|
存储 编译器 Linux
深入C语言:探索结构体的奥秘
深入C语言:探索结构体的奥秘