不得不知道的结构体变量的定义和初始化方法

简介: 不得不知道的结构体变量的定义和初始化方法

对于结构体,想必大多数人,会是喜欢,煎熬吧!!毕竟最难的C语言实现的通讯录,主要就是用了结构体,所以,结构体的重要性,不言而喻!!下面,想要知道:结构体变量的定义和初始化的各老铁,请紧跟笔者思路!!


1.创建变量的同时给初始化!


请看笔者的代码:


struct book
{
  char book_name[20];
  char author[20];
  int price;
  char id[5];
}sb3 = { "C语言程序设计","杜老师",88,"PG101" };
//定义的是全局变量!!

2.在main 函数里面局部变量初始化!


#include <stdio.h>
struct book
{
  char book_name[20];
  char author[20];
  int price;
  char id[5];
}sb3 = { "C语言程序设计","杜老师",88,"d101" };
//定义的是全局变量!!
int main()
{
  struct book sb1 = { "java虚拟机","赵老师",100,"z101" };
  //局部变量初始化
}


而打印过程需要:


printf("%s %s %d %s\n", sb1.book_name, sb1.author, sb1.price, sb1.id);

所以,代码的运行结果为:


0a2653c851af460fa595bd959398a8f1.png


而,结构体里面嵌套结构体变量也是可以的!!


下面,笔者来带领大家,走进,结构体的嵌套使用部分!!


#include <stdio.h>
struct stu
{
  char name[20];
  int age;
  char id[12];
};
struct book
{
  char book_name[20];
  char author[20];
  int price;
  char id[5];
  struct stu s;
}sb3 = { "C语言程序设计","杜老师",88,"d101",{"list",30,"20221009"} };
//定义的是全局变量!!
int main()
{
  printf("%s %s %d %s %s %d %s\n", sb3.book_name, sb3.author, sb3.price, sb3.id, sb3.s.name, sb3.s.age, sb3.s.id);
  return 0;
}

上面的代码中,笔者使用了结构体的嵌套使用:首先,定义了一个: struct book   的结构体,我们在这个结构体里面,嵌套了:struct stu s;  的结构体!!从而在打印的过程,需要:sb3.book_name, sb3.author, sb3.price, sb3.id, sb3.s.name, sb3.s.age, sb3.s.id,对于,这个不同,主要在于,嵌套的结构体struct stu s需要:先借用strucct book来找到struct stu s  ,从而找到name,age,id 等变量!!


从而最后的打印结果为:


2d65d23f6d4748949b924e4057485923.png


但是,对于两个结构体互相嵌套使用的情况下(你中有我,我中有你)怎样计算结构体的大小呢???很难吧!!所以,很少有着结构体互相嵌套使用的情况!(注意,这里说的是互相嵌套使用,不是嵌套使用)!!


但是对于结构体,我们也可以哎初始化的情况下:专门/指定初始化!


请看笔者代码:


#include <stdio.h>
struct s
{
  char c;
  int a;
  float b;
};
int main()
{
  //平常的初始化情况
  struct s s1 = { 'w',10,3.14 };
  printf("%c %d %f\n", s1.c, s1.a, s1.b);
  //专门/指定初始化!
  struct s s2 = { .b = 3.14,.c = 'w',.a = 10 };
  printf("%c %d %f\n", s2.c, s2.a, s2.b);
  return 0;
}


上述代码中:


//专门/指定初始化!
  struct s s2 = { .b = 3.14,.c = 'w',.a = 10 };
  printf("%c %d %f\n", s2.c, s2.a, s2.b);

就是:专门/指定初始化了!!


代码的运行结果为:


6de278e6d6694ce5bb08e7e842b7e74b.png


上面的两种初始化所运行的结果都是一样的,所以,结构体也可以专门/指定初始化!!


相关文章
|
6月前
|
C语言
结构体变量的初始化
结构体变量的初始化。
38 3
|
6月前
|
C语言 C++
结构体变量的初始化和引用
结构体变量的初始化和引用
65 1
|
6月前
|
存储
关于结构体变量的初始化和引用
在编程中,结构体是一种复合数据类型,它允许我们将多个不同类型的数据项组合成一个单一的数据结构。通过定义结构体,我们可以创建具有多个属性的数据类型,以更好地组织和处理复杂的数据。本文将介绍结构体变量的初始化和引用方法,并附上相应的代码示例
61 1
|
存储 Linux C++
结构体类型的定义和初始化
结构体类型的定义和初始化
|
6月前
|
存储 程序员 C++
定义和使用结构体变量
定义和使用结构体变量
54 1
|
2月前
|
Shell
如何定义变量
【9月更文挑战第4天】
36 11
|
4月前
|
存储 编译器
C 中的变量定义
【7月更文挑战第2天】C 中的变量定义。
29 3
|
6月前
|
存储 编译器 C语言
声明,定义,初始化,实例化
声明,定义,初始化,实例化
94 0
|
6月前
|
存储 编译器
C中的变量定义
C中的变量定义。
30 0
|
6月前
|
C语言
C11中类成员变量定义时初始化问题
C11中类成员变量定义时初始化问题
69 0