設有a陣列,int a 101,2,3,4,5,6,7,8,9,

2021-03-17 02:15:15 字數 5402 閱讀 5161

1樓:

//#include "stdafx.h"//vc++6.0加上這一行.

#include "stdio.h"

int main(void),m,n,ln,*p;

ln=sizeof(a)/sizeof(int);

while(1)

for(p=a+m-1,n--,m=0;m

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

2樓:格子裡兮

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

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

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

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

3樓:杜爺1號

答案是b,3.

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

4樓:小兆

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

5樓:寂寞的菸頭哥

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

1234

5678

9000

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

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

6樓:墨汁諾

不能表示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]。

7樓:匿名使用者

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

8樓:匿名使用者

選 b a[10]

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

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 則數值為9的表示式是

9樓:墨汁諾

選b記住這樣一抄

個無條襲件相等的等bai式:

*(p+i)與p[i]無條件等價。

因為p是指向陣列

dua首元素的地址,所以zhip[i]又和a[i]等價。

易知b選項dao即為p[8],也即為a[8],其值為9。

10樓:尚萌印蓮

選ap是a[0]的地址*p=*p+7:*p是8b選項的*(p+8)是p[8],值是9c是*p+8=a[0]+8=9d就是一個地址

11樓:人生如夢

記住這樣一個無條件相等的等式:

*(p+i)與p[i]無條件等價。

因為p是指向陣列a首元素的地址,所以p[i]又和a[i]等價。

易知b選項即為p[8],也即為a[8],其值為9。選b

12樓:匿名使用者

是這樣的!*p是一指標!指向a的首地址!

所以只有b)是正確的,c)會將指標指向一個不明區域而造成錯誤!

13樓:雪過了無痕

應該是p[8]和*p+8都可以吧

或者*(p+8)也應該對

若有說明:int a[][3]={1,2,3,4,5,6,7,8,9,10};則a陣列第一維的大小是 答案是4 為什麼?

14樓:石頭人浮士

因為陣列有10個數字,二維有三個數,10/3>3,所以計算機會自動將a陣列變成a[4][3]

因此一維的大小為4,「4」指一維有四個元素,而每個元素有3個數字

若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;則輸出結果不為5的語句

15樓:瀚漠

答案:d

對於陣列a[10],a就是該陣列的首地址,定義指標p賦值為a,那麼a和p的操作基本相同:

a[5]=p[5]=*(a+5)=*(p+5),對於d選項,p[5]是個int值,再取*就不對了。

16樓:假面

答案:d

對於陣列copya[10],a就是該陣列的首地址bai,du定義指標p賦值為a,那麼zhia和p的操作基本相同dao。a[5]=p[5]=*(a+5)=*(p+5),對於d選項,p[5]是個int值,再取*就不對了。

整數(int型別的常量)有幾種書寫形式,程式中的整數一般採用十進位制寫法。用十進位制方式寫出的一個整數就是普通數字字元組成的一個連續序列,其中不能有空格、換行或其他字元。

c語言的題 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};若陣列a首地址為500,則a[1]+3的值為什麼? 20

17樓:江公主玖押

答案a.

陣列復定義是a[0]=1,a[1]=2,a[2]=3, ...,a[9]=10

a. p += 2使p指向

a[2], *(p++)表示先製取*p的值, 然後

p增加1(指向a[3]), 所以取得的值是a[2]=3

b. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然後取*p的值,所以是a[3]=4

c. p += 3使p指向a[3], *p++表示先取*p的值, 然後p增加1(指向a[4]), 所以取得的值是a[3]=4

d. p += 2使p指向a[2], ++*p對*p的值增加1, 所以取得的值是a[2]=a[2]+1=4

還有一種寫法是(*p)++, 表示先取*p的值, 這個值再增加1

已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},c語言問題

18樓:匿名使用者

int (*ptr)[3]=a這句,

bai將a的首地du址賦值給了ptr,ptr表示的是zhi指向一個含有三個int的數dao組的指標,*((ptr+1)[2])等價於*((ptr+1)+2),等回價於*(ptr+3),這表示從答

陣列a的首地址向後移動3個單位,每個單位為一個含有3個int的陣列,所以一共向後移動了9個單位,即得出執行結果10!

要想正確表達a[1][2],應該是(*(ptr+1))[2],陣列的運算子[ ]比間值運算子*的優先順序高,(*(ptr+1))[2]表示a向後移動一個單位即三個int,此時ptr指向4,再往後移動2個int指向6。

其實遇到這類問題畫記憶體結構圖比較容易理解了

19樓:匿名使用者

(*ptr)[3]=a,陣列

指標只有3行,陣列a有四行,所以(*ptr)[0]=,(*ptr)[1]=,(*ptr)[2]=,所以*((ptr+1)[2])表示的是(*ptr)[2]裡面的回

第二個元素就是答10

20樓:匿名使用者

*((ptr+1)[2])這種用法是不對的,陣列的下標相當與解引用,比如a[2]=*(a+2)

因此,上面的替換做法是(*(ptr+1))[2].

21樓:巫馬尓絲

*((ptr+1)[2])和copy*(*((ptr+1)+2))是等價的,而第二個算式可以演化成*(*(ptr+1+2)),也就是*(*(ptr+3))。

你既然會用指標表示陣列,那麼我用一維陣列給你舉個例子:

int arr[3];

這裡如果要表示陣列的第二個元素,有2種方式 arr[1], *(arr+1),

就是說arr[1] == *(arr+1)

那麼你*((ptr+1)[2])我們只看括號內的內容(ptr+1)[2] ,它按照上邊的等式轉化一下就是*((ptr+1)+2),去掉裡面的括號*(ptr+1+2),也就是*(ptr+3);

*((ptr+1)[2]) == *(*(ptr+3)) == a[3][0]

很好的解釋了為什麼你寫的第一個表示式是10了,

你如果要用ptr表示a[1][2]就應該是*(*(ptr+1)+2)或者*(ptr+1)[2]這樣寫才對。

若有定義:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )對陣列a元素的引用是正確的。

22樓:處搖胼手胝足

a。a陣列的長度是3,*(p[4])和**(p+4)都會造成超出地址範圍

(**p)[2]表達不正確

*(p[2]+3) 是a[2][3];

23樓:匿名使用者

int (*p)[4];表明p是行指bai針,即p指向二維陣列中的一du行。zhi

p=a;這一句表示

daop指向a[0],也就是

版指向a陣列第0行的第0個元素權

(a[0][0])的地址。

p[2]表示p指向a陣列的第二行,即指向a[2]行,也就指向a[2][0]的地址。

p[2]+3表示行指標指向a陣列的第二行(從第0行開始),(從0開始)第3個元素,也就是a[2][3],*(p[2]+3)表示第2行,第3個元素的值。

p+4表示第四行(從0行開始),因為a陣列沒有第四行,所以是錯的。

p[4]表示第四行(從0行開始),原因同上。

*p表示a陣列第0行,第0列地址,**p表示a[0][0]的值,值不會再包含元素,所以(**p)[2]是錯的。

若有說明 int a31,2,3,4,5,6,7則a陣列第一維的大小是多少

最高維留空,按照初始化元素來進行分配.這裡每行三個.所以 123給第一行.456給第二行.7給第三行.所以是三行.第一維為3.若有說明 int a 3 1,2,3,4,5,6,7 則a陣列第一維的大小是 a 2 b 3 c 4 d 無確定值 若有說明 int a 3 則陣列a第一維的大小是3。int...

設有語句int a 3則執行了語句a a a a後,變數a的值是

0第一步 a a 9 運算後a為3 第二步運算 a 9後並返回a的值,得 a a 此時a的值為12 第二步 結果為0 賦值運算是從右到左的 上面的語句運算順序是 a a a a a 計算第一個後a 的值是 6,再計算第二個,a 的值就是 12 是賦bai值符號,賦值表達 du式先運算zhi 後的表示...

若有定義語句int a 5p a,則對a陣列元素的正確引用是什麼Aa B a 2 Cp 5 Da

正確答案是 d a 5 就是a 5 下標越界了 a就是a 0 a 0 2不是對陣列元素的正確引用同理,p 5 就是a 5 下標越界了而 a 2 就是a 2 若定義int a 5 p a 則a選項 抄中,a 5 a 5 是a 5 的地 bai址,a 5 是a 5 本身 但數列中沒有a 5 這個du元素...