#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;
}
int grade = scroe(stu, p); int scroe(struct Stdent stu, int *p){ XX XX return 1; }
估计是慕课网的编辑器有问题,如果正常运行的话这个运行不了,会报错,因为你的stu是空的,没有被赋值。你疑惑的是为什么我从函数里进行了赋值,为什么还是空的?函数是个代码块,stu是自动变量,函数结束后会被收回,只有return没被销毁,关于代码块和变量作用域的知识建议可以回看malloc的那节视频
因为在定义scroe的时候后面写的返回值是1