C語言高手請告訴我幾道簡單的題!我想搞明白謝謝

時間 2022-11-10 23:50:48

1樓:曬白的黑馬

1 . 首先我們定義的是乙個指標陣列,pt[3] 它和陣列類似,陣列名表示的是第乙個字元,而指標名則表示第乙個指標,所以pt應該是pt[0],而pt[0]對應的是t[0]

在 *(*(pt+l)+2) 中 先看pt+l 對於陣列來說,每一行的記憶體是連續分配的, 所以pt+l就是pt當前這一行的下一行,即t[1]

而 *(pt+l)+2 就是指向pt+1這一行的第三個字元 也就是t[1][2] 所以*(*(pt+l)+2) 就是指向t[1][2] 內容的

ps:for 迴圈中執行的意思就是: pt[0]→ a,b,c

pt[1]→ e,f,g

pt[2]→ h ,i, j

而pt對應的其實就是pt[0]所以 pt+1 =pt[1]

2.定義sum的時候 由於沒有對sum進行初始化,所以編譯器會對sum進行隨機賦值,所以sum將會被分配到乙個隨機數,而在求和的時候累加之後的和當然不確定

3.c第一次呼叫fun函式的時候,fun(a+fun(d)) 應該是在進入引數(a+fun(d)) 的時候遇到fun(d)

這時,由於還沒有執行static int d=5 所以 ,傳遞進去的引數p(也就是d)依然為1 ,然後再執行 d+=p;

這時輸出的d就等於6

之後再執行fun(a+fun(d)) 要再進入外層的fun函式 這時引數p就等於a+fun(d) 也就是9

這時候d是等於6的,所以d+=p之後就等於15了,所以,輸出了15

然後返回值是d所以也是15

所以最後結果就是6 15 15

ps.需要說明的是static int d=5 這裡d被宣告為乙個靜態變數,那麼也就是說在編譯的時候d這個變數已經被分配好記憶體,那麼重複執行fun()函式的時候,這個d變數是不會被重複定義的,

也就是說,當第二次執行fun函式的時候static int d =5 這一句是不用被執行的

2樓:

第乙個題,t是乙個陣列,pt是乙個指標陣列,做完迴圈後,指標陣列就指向了t這個陣列了。即pt和t應該是乙個內容,只不過t是const的。*(pt+1)就是t[1],*(*(pt+l)+2)就是t[1][2]了。

第二個題,sum沒有初始化,所以答案就選c了。記住一點哦,永遠不要使用未初始化的變數!

第三個題,選c,關鍵是那個static int d,這個位址分配以後,裡面的內容直到程式執行結束才釋放,這是變數生存期的問題了。

最後多說一句,這些題,最好是自己動手敲到編譯器裡面執行一下,然後,用除錯的功能,觀察各變數的變化,這樣理解起來會比較容易。

3樓:匿名使用者

呵呵 ,很高興啊,我剛學完c語言。我看看啊一:int t[3][3], *pt[3], k;

for (k=0;k<3;k++) pt[k]=&t[k][0];

其中 *pt[3] :pt是指向乙個有四個元素的一維陣列&t[k][0];//是第k行的位址

我們在來分析下執行過程:

for (k=0;k<3;k++) pt[k]=&t[k][0];

第一次 迴圈:pt[0] = &t[0][0]//把首位址賦給pt; ,*(*(pt+l)+2) 等價於:t[l][2] 《因為*(pt+l) 等價於 t[l] ,所以就是t[l]+2 ,再加個* ,就是t[l][2]了

第二次迴圈結果一樣,,*(*(pt+l)+2) 結果為t[l][2] )

二:main()

sum 的值 沒有初始化,所以他的值 是不可預料的、~和sum進行運算的後值 肯定也是是不可預料的 哈要採納吶~

同學 , 還有什麼不懂麼?

4樓:

17.c *(pt+1)== t[1][0]; *(*(pt+1)+2) = t[1][2]

11.其實一般的編譯器答案會是a,但是int sum;是沒有初始值的,他得預設值是不是0要根據編譯器的情況來決定,所以說是不確定

5樓:洋仔

17 c *(pt+1)指向的是t再加上2就是了

11 c 題是不確定的,因為初始值是隨機的,不確定的

6樓:

11.選c是因為沒有初始化,所以sum的值不確定。19.選c

有關c語言的問題,誰告訴我,有關C語言的問題,誰告訴我

首先,printf s p 這句是錯誤的,輸出格式為 s,代表字串,但後面的引數 p是個字元格式,不能正常執行。若改成printf c p 則輸出結果為o 若改成printf s p 則輸出結果如下圖 char a how are you p a printf s p 這個輸出的語法寫得有錯誤啊 你...

請各位高手告訴我如何重灌系統,謝謝

去買張能啟動的xp安裝光碟,啟動的時候放在光碟機裡就能安裝了。把系統安裝的光碟放到光碟機中,然後進入bios把first boot 改成cdrom.重啟機器,按提示操作就行了 有光碟機嗎?有就簡單了,都不用說了。你把系統盤放進光碟機,跟著步驟裝就ok了,裝系統很簡單的。哪個高手可以告訴我 怎麼重灌系...

幾道c 語言選擇題 幫幫忙 請高手詳細點啊

7.這個是常識,選擇a,即用0 255之間的數字來表示字元。8.因為while迴圈的迴圈體只有一條語句sum a 由於a並沒有在迴圈體內進行自加,因此a的值將一直是10,所以迴圈不會結束,所以選擇d 9,i這樣的表示式表示當i為0時表示式為真,i為非零時,表示式為假,因此與c選項相同。陣列元素產生溢...

請高手告訴我這個是張信哲的哪首歌

這首歌叫 知道 是阿哲94年的 知道 裡的,第二首.ps 這張 已經絕版了.不過 擁有 這張精選裡也有收錄這首.對你所有決定 我會全部考慮 對你為我所做的我會珍惜 對於明天種種 我無法對你承諾 也許你應該可以對我明了 你常想起過去 給你帶來許多恐懼 你說你已嘗盡了愛恨交集 對於明天種種 你不敢奢求太...

請高手告訴我97裡八神的各種技巧,請不要用箭頭標明就說類似「下前下前輕拳」就可以了,謝謝

下前 拳 放球 下後 拳 葵花 前下後 腳 琴月陰 近身後下前 拳 消風 前下前 拳 通天 下前下後 拳 必殺1 下後下前 拳 必殺2 補充回答你的補充問題 首先近身後下前 拳也就是將對手一扔,扔完之後按重拳瞬間放必殺1 主要掌握節奏,注意方向必殺別遙錯了 下前 輕拳 普通的底火 下前下後 輕拳 暴...