亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么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++ 入門
  • 參與學習       32229    人
  • 解答問題       195    個

C++ 入門,開啟趣味學習之旅,揭開 C++ 的神秘面紗,讓你不再望而生畏。

進入課程

為什么stu.grade會等于1呢?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號