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碼是接收鍵盤輸版入一個值,按大小順序插權入到陣列。第一個迴圈是從陣...