為什么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;
}
2023-07-13
2023-04-08
估計是慕課網(wǎng)的編輯器有問題,如果正常運(yùn)行的話這個運(yùn)行不了,會報錯,因為你的stu是空的,沒有被賦值。你疑惑的是為什么我從函數(shù)里進(jìn)行了賦值,為什么還是空的?函數(shù)是個代碼塊,stu是自動變量,函數(shù)結(jié)束后會被收回,只有return沒被銷毀,關(guān)于代碼塊和變量作用域的知識建議可以回看malloc的那節(jié)視頻
2023-02-19
因為在定義scroe的時候后面寫的返回值是1