C語言問題

2022-12-19 23:41:27 字數 703 閱讀 1057

1樓:匿名使用者

指標沒學好吧?沒事,慢慢來

首先s1=s2=(char*)malloc(sizeof(char)); 這句是想系統申請一個char大小空間,並把這個空間的地址值賦給s1與s2。也就是說s1與s2指向同一個地址。

然後:*s1=15; *s2=20; m=*s1+*s2;

*s1=15;是把s1所指向的地址空間裡的值改為15。

*s2=20;是把s2所指向的地址空間裡的值改為20。

但是s1與s2所指向的空間是相同的,所以現在的*s1的值也是20。所以m的值肯定是40了。如果你想讓結果變成35就要兩次申請空間:

s2=(char*)malloc(sizeof(char));

s1=(char*)malloc(sizeof(char));

這樣就ok了。

2樓:

看清楚程式就行了。

關鍵在s1=s2=(char*)malloc(sizeof(char));

這裡實質上調了幾次malloc呢?看到這估計你也知道了吧,只有一次,s1跟s2實際上都是指向同一個地址,所以

之後兩句賦值實際上是對同一個值改變了兩次,最終結果當然取決於最後一次,所以m也就是20+20=40了

3樓:匿名使用者

s1,s2指的同一個地址,所以當*s2再被賦值後,*s1的值也被改了

c語言問題,C語言問題

struct student拼寫成struct studnt了。拼寫錯誤 struct studnt沒有定義,所以無法執行sizeof。include typedef struct student int main c語言問題?嗯你的理解是對的,break就是用來跳出的switch,如果沒有brea...

c語言問題,c語言問題

首先你這個程式輸入個數是不可控的,n沒起到作用,因為你控制輸入的迴圈已經規定了i是從0到99,必須要輸入100個。而你這個 自認為統計總人數 的n n i,相當於n 1 2 3 那是不可能的。while xh i scanf d d xh i sg i n i sum sum sg i 用美元符號做...

c語言問題,C語言問題

if判斷句中,x 1 是真命題,所以x被賦值為1,y x,所以y被賦值為1。下一條語句,y y 1,所以y 2。所以x 1,y 2 c語言問題?這句迴圈的bai意義是從索引9開始du 向左遍歷元素,直到i j結束。zhi 整段代dao碼是接收鍵盤輸版入一個值,按大小順序插權入到陣列。第一個迴圈是從陣...