结构体的基本概念

本文介绍了C语言中结构体类型的定义与使用方法,包括如何定义结构体类型、创建结构体变量并为其成员赋值。
//
//  main.c
//  C语言学习


#include <stdio.h>

int main(int argc, const char * argv[]) {
    /*
     数组:用于保存一组相同类型的数据
     结构体:可保存不同类型的数据
     
     定义结构体类型的格式:
        struct 结构体类型名称
        {
            属性;
        }
     */
    
    //1.定义结构体类型
    struct Person
    {
        char *name;
        int age;
        double heigth;
    };
    
    //2.定义结构体变量
    struct Person p;
    p.name = "ykd";
    p.age = 18;
    p.heigth = 1.80;
    
    return 0;
}

### 结构体基本概念 #### 定义与作用 在编程领域,尤其是C语言中,结构体是一种用户自定义的数据类型,允许将不同种类的数据组合成一个整体[^1]。通过这种方式,程序员能够更高效地管理和处理复杂的信息集合。 #### 创建结构体 要创建一个新的结构体类型,需使用`struct`关键字并指定其名称以及内部成员列表。例如: ```c struct Person { char name[50]; int age; float height; }; ``` 这段代码定义了一个名为 `Person` 的新结构体类型,它包含了三个字段:名字(`name`)、年龄(`age`) 和身高 (`height`) [^2]. #### 使用结构体 一旦定义好结构体之后就可以声明该类型的变量来保存具体的数据实例了。这可以通过多种方式进行: - **直接声明**: 可以紧接在结构体定义后面立即声明变量; ```c struct Point { double x, y; } p1; /* 这里就声明了一个Point类型的对象p1 */ ``` - **单独声明**: 或者先完成结构体的设计再独立地去初始化新的实体; ```c struct Rectangle r; // 初始化r... r.width = 10.5f; r.height = 7.8f; ``` - **动态分配内存**: 利用指针也可以实现对结构体内存区域的操作。 ```c struct Circle *circlePtr = (struct Circle *)malloc(sizeof(struct Circle)); circlePtr->radius = 5.6f; free(circlePtr); ``` 上述三种方法均展示了如何有效地利用结构体这一特性,在不同的场景下灵活运用这些技术有助于提高编码效率和可读性[^4]。 #### 访问结构体成员 当有了具体的结构体变量后,则可通过`.`运算符轻松获取或设置其中各个组成部分的内容。对于指向某个结构体的指针而言,则应改用箭头(`->`)操作符来进行相应属性的访问。 ```c // 对于普通变量 person.age = 30; strcpy(person.name,"John"); // 如果是指向结构体的指针 ptr_person->age = 30; strcpy(ptr_person->name,"John"); ``` #### 复杂应用案例——嵌套结构体 除了简单的数据封装外,还可以让一个结构体包含另一个作为自己的子项,形成所谓的“复合型”或者说是“层次化”的设计模式[^5]: ```c typedef struct { int day; int month; int year; } Date; typedef struct { char title[100]; Author authorInfo; Date publishDate; } Book; Book myFavoriteBook; myFavoriteBook.publishDate.year = 2023; ``` 这里展示的是书籍信息记录的例子,其中不仅有书名(title),还关联到了作者详情(authorInfo)及出版日期(publishDate)两个额外维度上的描述。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值