若有以下定義,則陣列元素a的值是int a31,23,2,44,5,61,

2021-04-18 17:29:14 字數 5221 閱讀 3757

1樓:書一卷世情變幻

a[2][2]=6。

在c語言中,a[常量1][常量2]=,常量1可以沒有,但是常量2必須有。在編譯器進行編譯時,會有這兩種情況,下面分別說明。

1、若指定了 常量1、常量2的值,為了方便說明,先假設常量1=2、常量2=2,那麼a[0]=,a[1]=。例如,a[2][2]=,那麼a[0]=,a[1]=。

2、若常量1沒有時,會按照常量2的數值來設定一組資料的個數,組數不限。例如,a[2]=,那麼a[0]=,a[1]=,a[2]=。

2樓:戊問鮃

int a[3]=,,,};這樣就是陣列應該是a[4][3],4行3列,第一行是1,2,0,第二行是3,2,4,以此類推,所以a[2][2]是6,不懂hi我

3樓:沒有響應

值是6陣列的下標是0開始的所以

a[2][2]就是a陣列第三個元素也就是 4,5,6這個陣列 這個陣列第三個元素就是6

4樓:匿名使用者

答案6這個陣列a 就相當於

1 23 2 4

4 5 6

1 2 3

而超始下標為0 去裡面找找看a[2][2]是幾?

12. 若有說明:int a[][3]={1,2,3,4,5,6,7};則陣列a第一維的大小是( )。

5樓:格子裡兮

若有說明:int a[3]=;則陣列a第一維的大小是3。

int a:第一個中括號表示有此二維陣列有幾行,第二個表示有幾列。

故int a[3]=;說明此陣列有n行,3列;也就是說每行有三個元素,所以第一行有1,2,3 這三個元素,第二行有4,5,6三個元素,第三行有7這個元素,不足的兩個元素由0來補足。

對陣列進行初始化,要麼兩個維度都不寫,由賦值的陣列確定,或者第二維可以不寫,第一維要寫,再由賦值陣列確定。

陣列中的下標是從 0 開始的(而不是 1)。那麼,如何通過下標表示每個陣列元素的呢?通過「陣列名[下標]」的方式。

例如「int a[5];」表示定義了有 5 個元素的陣列 a,這 5 個元素分別為 a[0]、a[1]、a[2]、a[3]、a[4]。其中 a[0]、a[1]、a[2]、a[3]、a[4] 分別表示這 5 個元素的變數名。

如果從 1 開始,那麼陣列的第 5 個元素就是 a[5],而定義陣列時是 int a[5],兩個都是 a[5] 就容易產生混淆。而下標從 0 開始就不存在這個問題了!所以定義一個陣列 a[n],那麼這個陣列中元素最大的下標是 n–1;而元素 a[i] 表示陣列 a 中第 i+1 個元素。

另外,方括號中的常量表示式可以是「數字常量表示式」,也可以是「符號常量表示式」。但不管是什麼表示式,必須是常量,絕對不能是變數。

c 語言不允許對陣列的長度進行動態定義,換句話說,陣列的大小不依賴程式執行過程中變數的值。非通常的情況為動態記憶體分配,此種情況下陣列的長度就可以動態定義。

6樓:匿名使用者

int a;第一個中括號表

示有此二維陣列有幾行,第二個表示有幾列;

故int a[3]=;說明此陣列有n行,3列;也就是說每行有三個元素,所以第一行有1,2,3 這三個元素,第二行有4,5,6三個元素,第三行有7這個元素,不足的兩個元素由0來補足

故此定義下陣列a第一維的大小是3

7樓:匿名使用者

若有說明int a[3][4];則對a陣列元素的正確引用是 a[1][3]。a[2][4]越界了最後一個元素a[2][3] 引用時下標從0開始第一行a[0][0] a[0][1]。

。。第三行a[2][0] a[2][1]。。。程式1。

//定義為區域性性質的陣列#include void main() printf("

");}。

8樓:匿名使用者

3,除錯一下就知道了

c語言問題 若有說明int a[][4]={1,2,3,4,5,6,7,8,9};,則陣列a第一維

9樓:格子裡兮

若有說明int a[][4]=;則陣列a第一維是3。

定義陣列並賦值時c語言規定下標是這樣的,a[n]中的n個元素應該是a[0]....a[n-1]。。

因此int a[4]的寫法就是表示,第一維大小沒限制,但是第二維陣列大小就是4,也就是int a[4]=,,},明顯是3。

分析:二維陣列的一維大小,即指二維陣列的行數,在本題中,按行對二維陣列賦值,因此內層有幾個大括號,陣列就有幾行。

10樓:杜爺1號

答案是b,3.

int a[4]的寫法就是表示,第一維大小沒限制,但是第二維陣列大小就是4,也就是int a[4]=,,},明顯是3.

11樓:小兆

你定義的就是一個二維陣列,第二維的個數是4,為了把所有的資料能分成四份有沒有遺漏,那第一維就是3了。

12樓:寂寞的菸頭哥

首先看陣列後面為4表示有四列二維陣列是

1234

5678

9000

這裡就可以很明顯的看出是三行,所以就是a[3][4],第一個叫做第一維,第二個叫做第二維

20懸賞!!**等!若有以下定義:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 則值為3的是( ) 20

13樓:匿名使用者

*p=a,陣列名錶

bai示地址,該

du句話的意思就是p=&a[0],p+=2表示p=&a[2];

接下zhi來我們看看* ++的優dao先級版,兩個優先順序是一樣的,屬於右權結合。*(p++)首先計算p++,由於++在後面,所以*(p++)相當於計算*p,然後p++;所以a和c相同,至於d ++*p表示++(*p),將*p的值++。我不知道樓主用的什麼編譯器。

對於我的理解,如果是printf(「%d」,*(p++))這種樣式輸出的話,a 輸出是3,b輸出是4,c輸出的是4,d輸出是4

14樓:匿名使用者

應該是a,*(p++)和*p++是一樣的,都是先算p++【為p】然後算* 符【為*p=3】最後p自加

這是* 和++的右結合性。

若有定義int a[2][3],*p=a;則以下不能表示陣列元素a[1][2]的是選項:a,*(a[1]+2) b,

15樓:匿名使用者

首先 題目有問題

定義的時候 int *p; 指標p可以指向任何一個整形變數a是二維陣列名

int *p=a; 這個賦值本身就不對

16樓:

選baibcd

c、d選項等價,p是a的地址du,a是陣列名即陣列首元素zhia[0][0]的地址的dao地址,內所以p解引用一次得到的容值還是一個地址,和陣列元素自然不同

b選項,p指標解引用2次依然還是個地址,故不和a[1][2]相同a選項,*(a[1]+2)根據陣列與指標的等價關係(arr[i]==*(arr+i)),所以*(a[1]+2)==

a[1][2]

p要解引用3次才可能是陣列的元素

若有以下定義和語句: int a[10]={1,2,3,4,5,6,7,8,9,10},p=a; 則不能表示a陣列元素的表示式是( ) a) *p b)

17樓:墨汁諾

不能表示a陣列元素的表示式是( b) a[10] )----因為陣列a的最大下標只能是9,即a[9],

a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],一共10個元素。

a、*p  ---表示取p指標指向的單元的值,即表示取陣列a的首個元素a[0]的值。

b、a[10] ---因為陣列a一共10個元素,從0開始計數,

即a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],正好10個,沒有a[10],所以a[10]就是不能表達這個陣列元素。

c、*a ----陣列名a中儲存的是陣列的首地址,*是取單元中的值,*a就是取陣列首地址中單元中a[0]的值。

d、a[p-a] --- p指向的是陣列a,因為p中與a同資料相同都是陣列a的首地址,而p-a就等於0,因此 a[p-a]就相當於a[0]。

18樓:匿名使用者

選b)a[10] a[0]、a[1]、a[2]……a[9]分別是陣列a[10]的十個元素,故a[10]不能表示a陣列的元素。

19樓:匿名使用者

選 b a[10]

陣列是從a[0] 到 a[9] 的。。。。。。

若已定義:int a[5]={0,1,2,3,4},*p=a,則以下輸出結果為3的是()

20樓:自我程式設計

選b。p[3]等同與a[3]。

陣列的名字a,是表示陣列首地址的地址常量。其值就是&a[0];

*p=a;那麼p的值也是內&a[0];

p和a都表示地址容,所以*就是取地址對應的值。

(a+2)就是首地址值往後+2的地址,也就是&a[2],那麼*(a+2)就是a[2]的值2。

同理*(p+2)也是a[2]的值2。

*p[3]是不對的,p[3]不是地址是值。

注意:這裡p和a值一樣,但意義不同。p是指標值可以改變,a是常量不能改變其值。

所以p++可以,a++不行。

21樓:劉淘冬

概念:

這裡的*是指標的識別符號,*p就代表p是一個指標。

*p=a,完整的寫法應該內是,int *p=a;*代表p是一個指標,int 是指標p指向的容資料型別是int型,即整型。

因為p是指標,p=a,也就是p獲取了a的起始地址(不懂可以看看指標的定義)

*p可以理解為把指標p指向的地址裡面的數字表示出來,這裡p指向a的初始地址,a的初始地址裡放的是0,所以*p就是0,p[1]表示在p的地址上加1,因為p指向a的初始地址,也就相當於就是a的地址上加一,是a[1],所以*p[1]就是1,所以*p[3]就是3,很明顯選d

22樓:c語言基礎

&:取地址符

*:間接運算子

&變數:取變數的地址

指標[下表]等效陣列名[下表]等效 *(指標+下表)綜上所述:答案選b

設有以下定義,則下面給出的語句中錯誤的是int a 0 float b 1 25 char c Adefine d

c是錯誤的,因為a b是常量了,選c,是因為增一減一是一元運算子,只需要一個運算元,而這種運算元必須是變數,不能是常數或者是表示式。而c答案 a b 就是表示式了 有以下定義int a 0 double b 1.25 char c a define d 2下語句中錯誤的是a a b b c c d ...

若有如下定義inta2,b3floatx

float a b 2 得到來浮點數自2.5 int x int y,因為bai把x,y強制裝du換為zhi其實就是3墨dao2 得到int數1 結果是3.5 3.5 float a b 2 int x int y float 2 3 2 int 3.5 int 2.5 float 5 2 3 2 ...

22有以下定義語句編譯時會出現編譯錯誤的是

22.char a aa a是字元變數,只能儲存一個字元!23.c 列印字元 d 列印整數,至於是什麼值,請對照ascii表檢視!33.答案 a。但樓上解釋均有誤!void pf 定義函式指標pf,指向返回值為void的函式,引數任意 pf fun 正確!pf fun 正確!c照樣認可這種寫法,只是...