为什么stu.grade会等于1呢?

来源:7-2 霸道总裁如何命令下属:函数的参数

weixin_慕尼黑4374089

2023-02-17 17:26

#include <iostream>


using namespace std;


struct Stdent

{

    int grade;

};


int scroe(struct Stdent stu, int *p)

{

    stu.grade = 10;

    

    *p = 10;

    return 1;

}

int main(int argc, char **argv)

{

    int *p = nullptr;

    

    p = (int *)malloc(sizeof(int));

    struct Stdent stu;

    

    int grade = scroe(stu, p);

    

    printf("grade = %d\n", grade);

    printf("stu.grade = %d\n", stu.grade);

    printf("*p = %d\n", *p);

    

    free(p);

    

    //思考为什么stu.grade会等于1呢?

    return 0;

}


写回答 关注

3回答

  • 琪云
    2023-07-13 11:46:57
     int grade = scroe(stu, p);
     int scroe(struct Stdent stu, int *p){
     XX
     XX
     return 1;
     }


  • 慕函数8614728
    2023-04-08 19:27:17

    估计是慕课网的编辑器有问题,如果正常运行的话这个运行不了,会报错,因为你的stu是空的,没有被赋值。你疑惑的是为什么我从函数里进行了赋值,为什么还是空的?函数是个代码块,stu是自动变量,函数结束后会被收回,只有return没被销毁,关于代码块和变量作用域的知识建议可以回看malloc的那节视频

  • qq_慕少8002639
    2023-02-19 01:03:18

    因为在定义scroe的时候后面写的返回值是1

    weixin...

    grade是返回1每次,我是指的是结构体里的stu.grade, 这个不是在score函数里赋值10了吗?

    2023-02-28 10:29:45

    共 1 条回复 >

趣味 C++ 入门

C++ 入门,开启趣味学习之旅,揭开 C++ 的神秘面纱,让你不再望而生畏。

31197 学习 · 189 问题

查看课程

相似问题