C語言題目如圖答案是D我覺得應該選A啊!還有這個程式為什麼int在main的上面啊

2021-05-14 12:51:25 字數 3624 閱讀 1071

1樓:匿名使用者

我來給你解釋吧。int a[max]在main函式外面,說明它是一個全域性陣列。

你以為是a正確,其實,對於函式sub2中的陣列a,改變的只是sub2函式內部的陣列a,不是全域性陣列a。

說白了就是變數的就近原則,區域性變數優先於全域性變數。

c語言選擇題,答案選b,我覺得應該是d啊

2樓:架構工程師

『cd』表示的不對,如果是字串應該是「cd」,單個字元應該是『c』,『d』

c表示轉義字元,\a 響鈴(bel) 007

3樓:如此_青春

因為a=b和c=a之間有;號,所以當第一個if判斷語句不成立時c=a能執行,然後第二個if判斷語句不成立。所以最後答案是b

4樓:呂萬事如意

這個題目的答案

就是應該選擇b

5樓:q微

看了一一眼差點變白痴 被你害死啦 要採納呀

c語言問題!這道題完全不懂,->是什麼意思,為什麼選a,還有為什麼d答案是20?謝謝

6樓:匿名使用者

1首先定義了結構體st ,和結構體指標變數pt和結構體陣列c[2]。並將陣列初始化c[2] = ;

你可以看成c[0] = ;c[1] = ;也就是c[0].x = 10; c[0].y = a;c[1] . x = 20; c[1].y = b;

pt=c,及時將c陣列的首地址(c[0]的地址)賦給pt. ++pt ->x 相當於++(pt ->x)=++(c[0].x),所以a等於11.

(pt++)->x,其中(pt++)= c[1]的首地址所以(pt++)->x =c[1].x

7樓:匿名使用者

struct st *pt;

int a = ,b = ;

struct st c[2] = ;

/*20,

parray_b:}*/

pt = c;

a) + + pt -> x ++(pt->x) == ++((*pt).x) == ++(c[0].x), so is 10+1=11

b) pt -> x so is 10

c) *pt -> y *(pt->y) ==*((*pt).y) ,since (pt->y) point to a[0], so *(pt->y) is 1

d) (pt + +) -> x (pt++), since pt point to c[0]=, (pt++) point to c[1]=, so (pt++)->x == c[1].x, is 20

***********************************===

注意點,

(1)指標的++或--操作是針對給型別的大小pt++,實際指標數值移動sizeof(struct st)

就如同若是int指標,pint++,實際移動的是sizeof(int)

而int++,就是int變數數值加1

(2)a,b為a,b陣列的起始地址

實際a=&a[0],b=&b[0]

(3)最後要注意的就是(++指標)還是(++(*指標)),後者根據*對指標解封裝後的資料型別而定,如(*pint)解封后就是int,對int++就是數值遞加,而(++指標)是相當於陣列元素的位置移動

我做c語言有個題目不會。。想問問各位大俠。。。拜託了。。為什麼答案是a,,,求詳細解答。*c=*c+1;d=d+1

8樓:半島殤

注意fun函式的兩bai個形式引數,第du一個是指zhi針傳遞是把變數daob地址傳遞給子函式,即子函式中的回變數b指向存放字元答a的地址,與主函式中變數b指向的是同一位置,因此在子函式那個語句能夠改變主函式中b的值,只是指標形參的一個用法,第二個形參就不用多說了把,子函式中形參的變化不會引起主函式中變數變化,因為使用的不是同一記憶體空間!所以呼叫子函式會輸出bb,主函式中輸出語句會輸出ba!樓主能懂吧?

不懂的話繼續問哦!

9樓:

#include

void fun (char*c,int d)

{*c=*c+1;//把c所指向的

10樓:匿名使用者

先執行主函

來數,把源

變數b的地址以及變數baia的值傳給函式fun,由於du對變數zhic的處理是在處理b變數dao地址裡的內容,因此對其加1,就是給分配給b的空間裡的變數ascii加1,也就是a+1,為b,傳變數a的值給函式的意思是給變數d分配一個空間,然後將a的值拷入其中,因此對變數d的改變不影響變數a的值,故fun執行完以後變數b和a裡面分別儲存的是b和a

11樓:匿名使用者

選baia

呼叫fun(&b,a)時,傳遞的是b的引用和dua的值,在fun()中,會zhi改變daob的值,但不能改變a的值。

故在內fun()中輸出的容是b,b,而在main函式中,b的值變了,而a的值沒變,故輸出b,a

所以答案為:b,b,b,a

12樓:匿名使用者

--fun(&b,a)指的是把baib的地址,和du變數a的值賦給fun()函式zhi中的形參c和a

--fun(char *c,intb)指的是c是一個dao指標變數是用版來存權地址的這與把&b放如其中一致注意這裡的*c和下面的*c不是同一個意思,上面char *c 是說c這個變數是指標變數,是用來解釋的定義,而下面*c=*c+1,這裡的兩個*c 都是隻把c所指向的變數加一然後存到所指變數中相當於

a=a+1,其實d=d+1也是a=a+1不同的是c語言規定因指標變數(如c)所指向而參與運算的變數(b)在功能函式(被呼叫函式)呼叫後值跟著變;

而變數(如b)在功能函式中值的改變並不改變原來變數(a)的值

13樓:匿名使用者

函式func傳進去

來第一個為指標源

,第二個引數為變數。

在呼叫函bai數時候,形du參並不是傳入的實際值,zhi而是會在棧裡,dao生成一個臨時變數來,存放實際傳入的值也就是說相當於

void fun (char*c,int d)//執行玩這個函式後,傳入指標的變數大小被改變,傳指的函式大小不變。

此時a = 『b』 a = 『b』

所以選a

14樓:匿名使用者

函式func傳進抄去第一個為指標襲,第二個引數bai為變數。

在呼叫du函式時候,形zhi參並不是傳入的實際值,而dao是會在棧裡,生成一個臨時變數來,存放實際傳入的值也就是說相當於

void fun (char*c,int d)//執行玩這個函式後,傳入指標的變數大小被改變,傳指的函式大小不變。

此時a = 『b』 a = 『b』

所以選a

15樓:百讀不饜

這裡有傳址和傳值的概念

第一個引數char *c是將變數b的地址賦值給了指標c,當指標c指向的數值發生變化時,變數b也會發生變化

而第二個引數d是將變數a的值賦值給了變數d,所以d的變化不會影響到a

10 9d 25,c語言的題目,寫出答案和分析過

d 25 d 10 2 2 9 2 所以 a 2 b a 1 a為非0 所以是真 1 為非0 所以也是真 a 1 就是真 真 還是真所以 b 1 因為 真的值為1 你還是看看c語言後面附錄看看 和 的優先規則,除和求餘優先規則一樣,所以先算d 10得出的結果為2,然後2對9求餘,結果就是2!除運算子...

下面這個C語言題目答案為什麼是這樣的

ch 0 1 ch 1 2 ch 2 a 因為ch 2 a 在ch i 0 ch i 9 中為false,所以for迴圈實際上只執行一次,s 10 s ch i 0 10 0 1 0 1 因為做了i 2後跳到了字母a上,於是就結束迴圈了,不往後跳 下面這個c語言題是什麼鬼啊 首先題目有誤,不應該出現...

c語言試題,32,答案選a,我算出來選d,求檢驗

a 4 4 和a 4 5 都是 你忽略了 仔細看題就會發現最後一個字串的最後一個字元是空格,所以答案應該是flqvz c語言,答案選a,但是我覺得我劃線部分的那條語句不是錯的嘛?我覺得選d,求解釋!a正確,選a。關係運算子是左至右結合的,所以 a a 語句與目的不符,但是電腦是檢測不出來的 c語言的...