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語言的...