• ------构造类型数据—结构体---- + ----函数-----


    构造类型数据——结构体

    1)结构体的基本概念

    结构体(struct)是C语言(以及其他一些编程语言)中用于将不同类型的数据组合成一个单一类型的方式。这种数据类型允许你将多个变量(可能是不同类型)组合成一个单一的实体。结构体中的每个成员都可以有它自己的数据类型。

    以下是一个简单的结构体定义示例:

    #include 
    
    // 定义一个名为Student的结构体
    struct Student {
        char name[50];
        int age;
        float score;
    };
    
    int main() {
        // 声明一个Student类型的变量
        struct Student stu1;
    
        // 为stu1的成员赋值
        strcpy(stu1.name, "张三");
        stu1.age = 20;
        stu1.score = 90.5;
    
        // 输出stu1的信息
        printf("Name: %s, Age: %d, Score: %.1f\n", stu1.name, stu1.age, stu1.score);
    
        return 0;
    }
    

    2)结构体数组

    结构体数组是一个可以包含多个结构体元素的数组。每个元素都是结构体类型的一个实例。

    以下是一个结构体数组的示例:

    #include 
    #include 
    
    struct Student {
        char name[50];
        int age;
        float score;
    };
    
    int main() {
        // 声明一个包含3个Student类型元素的数组
        struct Student students[3];
    
        // 为数组中的元素赋值
        strcpy(students[0].name, "张三");
        students[0].age = 20;
        students[0].score = 90.5;
    
        strcpy(students[1].name, "李四");
        students[1].age = 21;
        students[1].score = 85.0;
    
        // ... 可以继续为students[2]赋值
    
        // 输出所有学生的信息
        for (int i = 0; i < 3; i++) {
            printf("Name: %s, Age: %d, Score: %.1f\n", students[i].name, students[i].age, students[i].score);
        }
    
        return 0;
    }
    

    3)指向结构体类型的指针变量

    指向结构体类型的指针变量用于存储结构体类型变量的内存地址。你可以使用这个指针来访问结构体中的成员。

    以下是一个指向结构体类型的指针变量的示例:

    #include 
    #include 
    
    struct Student {
        char name[50];
        int age;
        float score;
    };
    
    int main() {
        // 声明一个Student类型的变量并为其赋值
        struct Student stu1;
        strcpy(stu1.name, "张三");
        stu1.age = 20;
        stu1.score = 90.5;
    
        // 声明一个指向Student类型的指针变量并使其指向stu1
        struct Student *p = &stu1;
    
        // 使用指针访问stu1的成员并输出其信息
        printf("Name: %s, Age: %d, Score: %.1f\n", p->name, p->age, p->score);
    
        return 0;
    }
    

    注意,在使用->运算符时,左侧是指向结构体的指针,右侧是结构体的成员名。这与.运算符不同,.运算符用于直接访问结构体变量的成员。

    好的,下面我会逐一解释您列出的函数相关的主题,并给出相应的代码示例。

    函数

    1)函数的基本概念,函数的定义、说明和调用

    函数是执行特定任务的代码块,它接受输入(参数),处理这些输入,然后可能返回一个值。

    定义

    #include 
    
    // 定义一个函数
    void printHello() {
        printf("Hello, World!\n");
    }
    
    int main() {
        // 调用函数
        printHello();
        return 0;
    }
    

    2)函数的返回值

    函数可以返回一个值给调用者。这个值在函数中使用return语句返回。

    示例

    #include 
    
    // 定义一个返回整数值的函数
    int add(int a, int b) {
        return a + b;
    }
    
    int main() {
        int sum = add(3, 5); // 调用函数并接收返回值
        printf("The sum is %d\n", sum);
        return 0;
    }
    

    3)参数的传递,数值传递和地址传递

    数值传递:在C语言中,默认情况下,参数是通过值传递的。这意味着函数会接收参数值的副本。

    地址传递(或引用传递):在C语言中,虽然没有直接的引用传递,但我们可以使用指针来模拟地址传递。

    示例(地址传递):

    #include 
    
    // 使用指针(地址传递)修改变量的值
    void increment(int *p) {
        (*p)++;
    }
    
    int main() {
        int x = 5;
        increment(&x); // 传递x的地址给函数
        printf("x is now %d\n", x); // 输出6
        return 0;
    }
    

    4)函数的嵌套调用

    一个函数可以调用另一个函数,而被调用的函数本身也可以调用其他函数,这就是函数的嵌套调用。

    示例

    #include 
    
    void printTwice(char *str) {
        printf("%s\n", str);
        printHello(); // 嵌套调用另一个函数
    }
    
    void printHello() {
        printf("Hello, World!\n");
    }
    
    int main() {
        printTwice("First message");
        return 0;
    }
    

    5)数组作为函数参数

    在C语言中,数组可以通过指针传递给函数。当我们传递数组给函数时,实际上传递的是数组首元素的地址。

    示例

    #include 
    
    // 使用数组作为函数参数
    void printArray(int arr[], int size) {
        for (int i = 0; i < size; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    }
    
    int main() {
        int numbers[] = {1, 2, 3, 4, 5};
        printArray(numbers, 5); // 传递数组和大小给函数
        return 0;
    }
    

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    前端学习 linux —— shell 编程
    InfoNCE Loss公式及源码理解
    软件工程之总体设计
    使用Dockerfile部署springboot项目 (入门级教程 简单易懂)
    【MATLAB】详解 M 文件与 M 函数
    gradle 改为 国内镜像 下载
    常用的display的属性
    【JAVA】SpringBoot
    【Note17】PECI(Platform Environment Control Interface)
    【MATLAB源码-第53期】m代码基于粒子群算法(PSO)的三维路径规划,显示最优路径和适应度曲线。
  • 原文地址:https://blog.csdn.net/2201_75637762/article/details/139748912