【C语言】传递 结构体变量 & 结构体指针

结构体变量之间的传递

直接把 结构体 赋值给 另一个结构体变量

#include <stdio.h>

struct Date {
    int year;
    int month;
    int day;
} date = {
        .year = 2021,
        .month = 1,
        .day = 5
};

int main(void){

    struct Date d;
    d = date;
    printf("d 的值 :%d-%d-%d",d.year,d.month,d.day);
    return 0;
}

mark

结构体 作为 函数参数 传递

把 结构体变量 作为函数的参数 传递给函数

#include <stdio.h>
// 定义结构体
struct Date {
    int year;
    int month;
    int day;
};
// 定义函数
struct Date getDate(struct Date date){
    // 给结构体赋值
    date.year = 2021;
    date.month = 1;
    date.day = 5;
    // 返回结构体
    return date;
}

int main(void){

    struct Date date,d;
    d = getDate(date);
    printf("日期为:%d-%d-%d",d.year,d.month,d.day);
    return 0;
}

mark

结构体指针 作为 函数参数 传递

函数直接传入结构体会降低性能,传入结构体指针 能提高程序效率

#include <stdio.h>

struct Date {
    int year;
    int month;
    int day;
};

// 传入指针 不需要返回值
void getDate(struct Date *date){
    // 给结构体赋值
    date->year = 2021;
    date->month = 1;
    date->day = 5;
}

int main(void){

    struct Date date;
    getDate(&date); // 传入地址
    printf("日期为:%d-%d-%d",date.year,date.month,date.day);
    return 0;

}

mark

动态申请结构体空间

动态申请,存储在 堆空间,用完记得释放

#include <stdio.h>
#include <stdlib.h>

struct Date {
    int year;
    int month;
    int day;
};

// 传入指针 不需要返回值
void getDate(struct Date *date){
    // 给结构体赋值
    date->year = 2021;
    date->month = 1;
    date->day = 5;
}

int main(void){
    struct Date *date;
    // 申请空间
    date = (struct Date *)malloc(sizeof(struct Date));

    getDate(date); // 传入地址
    printf("日期为:%d-%d-%d",date->year,date->month,date->day);
    // 释放空间
    free(date);
    return 0;
}

mark

发表评论 / Comment

用心评论~