为了账号安全,请及时绑定邮箱和手机立即绑定

为什么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;

}


正在回答

3 回答

 int grade = scroe(stu, p);
 int scroe(struct Stdent stu, int *p){
 XX
 XX
 return 1;
 }


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

weixin_慕尼黑4374089 提问者

grade是返回1每次,我是指的是结构体里的stu.grade, 这个不是在score函数里赋值10了吗?
2023-02-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
趣味 C++ 入门
  • 参与学习       27981    人
  • 解答问题       171    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信