C語言問題!為什麼這三道題輸出結果沒有變,請詳細解釋下,指標不太懂。謝謝!ps題中大小寫有錯,不用

2021-03-24 02:16:30 字數 972 閱讀 1914

1樓:初代man影

第一題:fun(a,5),則p指向陣列a的首位址,然而在fun函式裡面的for迴圈,p=b,則指向b陣列的首位址,跟a無關了。其次,printf("%s\n",a); a**來的?

c語言是區分大小寫的。

第二題與第三題:*s=a,s指向a陣列首位址,然後在fun函式裡,s又指向別的位址去了,所以函式裡的操作與main裡的s 無關,main裡的s還是指向a陣列首位址,所以*s的值還是a資料的第乙個。

這就是實參和形參,不同函式你想象為不同的空間。在main函式把值傳給fun函式,也就是值複製過去乙個,怎麼變都不關main函式裡面的事,但是fun函式是用指標,就是main函式變數的位址的,就能影響到main函式的變數了。然而fun函式的指標又指向別處了,就又跟main無關了!

2樓:捐你妹

第一題是因為在for迴圈的時候將p的值修改為本地臨時變數的值。然後再做變化,所以與後面的題目一致,都是區域性變數的變化不影響實參。

第二題和第三題是一樣的,就只解釋第二題了。

當我們將s傳遞到函式中之後,此時的s就是乙個區域性變數了,這裡再將s重新賦值,對外部是不影響的。所以在返回函式呼叫者的時候,s的值依然不變。

3樓:哥德**的憂鬱

第一題,是因為,函式內部建立了乙個形式參量,接受了a的位址,然後在for迴圈裡,這個參量又被賦值指向內部變數陣列b,所以,它就不會對a產生影響.

我等一下給你講後面兩題

第二題類似,函式建立了乙個形式參量接受了s所指向的位址,然後又讓這個參量指向malloc出來的記憶體.所以也不會對原位址的資料產生影響

第三題也是類似,函式用參量接受了位址之後就是參量指向另乙個位址,所以仍然不會對原位址的資料產生影響.

你要理解形式參量是函式自己構造的,它接受的只是主函式傳輸的乙個數值,再這三道題裡面這些數值是位址.如果參量不再指向傳輸過來的位址,就不能對位址所對應的資料進行操作

不懂歡迎追問

第三題,C選項為什麼,C語言第三題為什麼選c

碳酸鈉水解後顯示為鹼性,醋酸鈉水解後也為鹼性,但是醋酸的酸性比碳酸強 所以碳酸鈉的的鹼性大於醋酸鈉 高中數學第三題,這個c選項和d選項有什麼區別?算出來不都是i嗎 為什麼選c?對複數a ib,a ib 指的是複數的模,不是絕對值,a ib a b 所以 i 1。i是虛數,沒有正負大小,不能用絕對值的...

C問題,13題為什麼選A,這題為什麼選C

因為 在結構體中 只有a中的定義方式是正確的 bcd 都有錯誤 結構體具體定義方式可以參考書籍 這題為什麼選c 選c。觀察題目,每幅圖里有且只有兩個面積相等形狀相同的圖形 如下圖所示 d項中間那兩個梯形面積肯定不相等,因為左右兩邊的長方形的寬都不相等。23題為什麼不選b選c。實驗b只能證明二氧化塘不...

C語言第26題為什麼,C語言第26題

這道題主要疑點是b的值,對初學者來說比較容易出問題,該題主要考的是,語法掌握情況,現在逐句解釋如下 首先a 1 b 1 c 未知 a 將a自增1這時a 2 b 1 c 未知 b 1 這句沒有任何意義,它只計算b 1但結果沒有賦值給任何變數,毫無意義,到這裡a 2 b 1 c 未知 c a b 主要是...