C零基础视频-39-结构体的定义与使用

目录

  • 为什么要使用结构体
  • 结构体的定义与使用
    • 结构体的定义
    • 定义结构体变量
    • 引用结构体中的成员

为什么要使用结构体

生活中的事物,往往有多种属性,我们为了记录和表示他们,需要围绕一个事物,记录多中数据。
如一只宠物狗,他可能有:姓名、颜色、体重。
我们可以使用三个不同的变量记录它:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char szName[20] = { "旺财" };
    char szColor[20] = { "黄色" };
    int nWeight = 5;

    printf("%s 颜色:%s, 体重:%d公斤\r\n", szName, szColor, nWeight);
    return 0;
}

但是,毕竟这些变量是互相独立的,除了程序员自己注意外,没有其他办法从语法上强调了三个变量都指向了同一个事物。
为此,C语言中发明了结构体,他是一中非基本数据类型,可以将多种数据组合为新的数据类型

结构体的定义与使用

结构体的定义

结构体的关键字是struct,用于声明新的数据类型,其语法如下:

struct <结构体类型名> {
    <成员类型1> <成员变量名1>;
    <成员类型2> <成员变量名2>;
    ……
};

比如,我们声明宠物狗的结构体类型:

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
};

定义结构体变量

定义完成结构体类型后,我们就可以用这种新类型,去声明新变量,声明方式和基本数据类型一样:

<类型名称> <变量名>

比如:

#include <stdio.h>

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
};

int main(int argc, char* argv[])
{
    struct tagPetDog dog1;
    struct tagPetDog dog2;
    return 0;
}

也可以在声明结构体类型的同时,声明变量名:

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
}dog1, dog2;

但是这样容易造成变量管理的混乱,在工程实践上使用较少。

结构体同数组类似,可以在定义变量的同时初始化:

struct tagPetDog dog1 = { "旺财", "黄色", 5 };

引用结构体中的成员

声明结构体变量后,我们可以通过"."符号引用其中的成员。

#include <stdio.h>

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
};

int main(int argc, char* argv[])
{
    struct tagPetDog dog1 = { "旺财", "黄色", 5 };
    printf("%s 颜色:%s, 体重:%d公斤\r\n", dog1.szName, dog1.szColor, dog1.nWeight);
    return 0;
}

可以看出,这样使得数据更加聚合,便于理解和管理。

原文地址:https://www.cnblogs.com/shellmad/p/11695646.html

时间: 2024-10-29 07:18:27

C零基础视频-39-结构体的定义与使用的相关文章

零基础入门之结构体字节对齐

一.字节对齐的规则: 1.一般设置的对齐方式为1,2,4字节对齐方式.结构的首地址必须是结构内最宽类型的整数倍地址:另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍(需要特别注意的是windows下是这样的,但在linux的gcc编译器下最高为4字节对齐),否则在前一类型后补0:这里特别提到的是数组一定要注意,而且在一些编程的技巧中,我们可以使用数组强制字节达到对齐的目的.这在网络编程中是很常见的. 举例:比如CHAR型占用空间为1字节,则其起始位置必须可被1整除.INT为4字节,其起

C零基础视频-42-共用体

目录 共用体的定义与使用 共用体与结构体的比较 共用体的定义与使用 共用体的关键字是union,共用体是非基本数据类型,同结构体类似,我们需要先声明共用体类型,再利用自定义的类型去定义变量. #include <stdio.h> #include <string.h> union MyUnion { double dbWeight; int nID; char szName[8]; }; int main(int argc, char* argv[]) { MyUnion unio

C零基础视频-40-结构体指针

目录 结构体指针的定义 使用结构体指针引用结构体成员 结构体指针作为函数参数传递 结构体指针的定义 结构体指针的定义与基本数据结构的指针类似,使用"*"符号即可: #include <stdio.h> struct tagPetDog{ char szName[20]; char szColor[20]; char nWeight; }; int main(int argc, char* argv[]) { tagPetDog dog = { "旺财",

C零基础视频-30-二维数组的定义与使用

目录 二维数组的定义 二维数组的初始化 二维数组的引用 二维数组的定义 type 数组名[行][列] 二维数组的初始化 全部初始化为0: char chAry[2][3] = { 0 }; 全部初始化为特定值: char chAry[2][3] = { 0x00, 0x01, 0x02, 0x10, 0x11, 0x12 }; 或者区分行: char chAry[2][3] = { { 0x00, 0x01, 0x02, }, { 0x10, 0x11, 0x12, } }; 略过某行,部分初始

黑马程序员---C基础12【结构体数组】【结构体指针】【结构体嵌套】【作为函数参数】【枚举类型】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [结构体数组] 1.结构体数组: 结构体数组的每一个元素都是具有相同结构类型的下标结构变量:(可以表示一个群体,一个班学生档案) 2.结构数组定义: 定义格式: struct    结构名{ 成员列表: }数组名[数组长度]: 1 1)定义结构体的同时定义数组: 2 3 struct stu{ 4 5 int num; 6 7 char name[10]; 8 9 int age; 10 11

12、C#基础整理(结构体)

结构体 1.概念: 结构体是写在main函数外的数据结构,由不同类型的数据组合成一个整体,这些组合在一个整体中的数据是互相联系的 2.声明方式: struct 结构体名 { 成员变量(由类型名+成员名组成) } 例: public struct student//public是修饰符,可以不加,作用范围为整个命名空间 { public int Code;//定义变量,每一个变量叫做结构体的属性 public string Name; public string Sex; public int A

结构体的定义及使用

结构体的定义 定义一个结构的一般形式为: struct 结构名 { 成员表列 } 成员表由若干个成员组成,每个成员都是该结构的一个组成部分. 对每个成员也必须作类型说明. 例如: struct stu { int num; char name[20]; int age; } 结构类型变量的说明 结构体定义并不是定义一个变量,而是定义了一种数据类型,这种类型是你定义的,它可以和语言本身所自有的简单数据类型一样使用(如 int ). 结构体本身并不会被作为数据而开辟内存,真正作为数据而在内存中存储的

C /C ++中结构体的定义

c语言中结构体的定义: struct 结构体名{ 成员列表: ..... }结构体变量: 7.1.1 结构体类型变量的定义结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共计有三种形式,分别介绍如下:1) 先定义结构体类型,再定义结构体类型变量:struct stu / *定义学生结构体类型* /{char name[20]; / * 学生姓名* /char sex; / * 性别* /long num;

结构体类型定义(C语言)

结构体的定义形式如下: struct 结构体名 { 结构体成员 }: 结构体变量的定义方式有三种:1.先定义结构体,再定义变量: eg. struct student{ char name[10]; int age; int student_number; }; struct student s1,s2; 2.定义结构体的同时定义变量:eg. struct student{ char name[10]; int age; int student_number; }s1,s2; 在定义结构体stu