TOP

重学C语言之结构体(二)
2019-09-04 00:55:58 】 浏览:67
Tags:重学 语言 结构

函数的参数
使用结构体变量的作为函数的实参时,采取的是"值传递",会将结构体变量所占内存单元的内容全部顺序传递给形参,形参也必须是同类型的结构体变量

void display(struct Student stu);

在形参位置使用结构体变量,但是函数调用期间,形参也要占用内存单元,这种传递方式在空间和时间上开销都比较大。

根据函数参数传值方式,如果在函数内部修改了变量中成员的值,则改变的值不会返回到主调函数中。

第二种:使用结构体变量的指针作为参数
在使用结构体变量作为函数的参数时,传值过程中空间和时间开销大,可以使用结构体变量的指针作为函数的参数进行传递。

在使用结构体变量的指针时,只是将结构体变量的首地址进行传递,并没有将变量的副本进行传递。

void display(struct Student *stu);

因为这里传递的变量时地址,如果在函数中改变成员中的数据,那么返回主调函数时变量会发生改变。

#include <stdio.h>

struct Student {
    char name[20];
    float score[30];
} student = { "刘备", 98.39f, 89.0, 93.5f };

void display(struct Student *s) {
    printf("-------------以下是学生信息-------------\n");
    printf("姓名: %s\n", s->name);
    printf("数学成绩: %.2f\n", s->score[2]);
    // 修改了数组元素的值
    s->score[2] = 90.2f;
}

int main(int argc, char const *argv[]) {
    struct Student *pStudent;
    pStudent = &student;
    display(pStudent);
    // 也可以直接传递结构体变量的地址作为参数
    // display(&student);
    
    // 主调函数中,结构体成员的值发生了改变
    printf("修改后的数学成绩: %.2f\n", pStudent->score[2]);
    return 0;
}

重学C语言之结构体(二) https://www.cppentry.com/bencandy.php?fid=45&id=249906

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇my first blog by cnblogs 下一篇1082 射击比赛 PAT (Basic Level)