问答详情
源自:7-2 霸道总裁如何命令下属:函数的参数

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

#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;

}


提问者:weixin_慕尼黑4374089 2023-02-17 17:26

个回答

  • 琪云
    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