已知 int x1,3,5,7,9,11p x則能正確引用陣列元素的語句是

2021-03-27 11:10:09 字數 5301 閱讀 3858

1樓:∮樣小樣

a. x是陣列名。陣列名代表陣列首元素的地址,是一個指明針型常量。

b. *(--p)是p先自減,再取所指向的元素。但p原先指向首元素x[0],自減後越界了。

c.當一個陣列x省略了中括號裡的數(用來指定陣列長度)時,說明花括號裡為全部陣列元素。所以這個陣列只有x[0]~x[5].

d.類似於b,*(++p)取了x[1]的值。 正確。

2樓:無憂網事

選擇da:x是陣列名,也是一個地址常量,總是指向陣列的開始。

b:--p已經超界了

c:陣列x共6 個元素,最後一個元素是x[5],因為c語言陣列下標從0開始,所以x[6]也超界

d:正確。實際就是陣列x的第二個元素,即x[1],值為3.

3樓:匿名使用者

選d --p就越界了,++p不越界 ;x是地址;x[6]同樣也越界

.已知:int x[ ]={1,3,5,7,9,11},*ptr=x;則能夠正確引用陣列元素的語句是:

4樓:用飄柔洗腳丫

b,不是沒辦法引用吧 ,*(--p)因為p現在指向的是陣列的首地址,--p表示先--,那麼p將指向陣列首地址的前一個,那是什麼呢當然是空啦,所以這個在執行的時候應該會報錯。

5樓:匿名使用者

d。不過語句執行完以後 ptr指向的地址的內容就不確定了

6樓:牛肉乾

a.是首地址

b.ptr是陣列的首地址,再取內容得到第一個元素c.x[6]是第七個元素,世界舒服,無法輸出。

d.首地址自減這樣的地址不存在,沒有對應內容

7樓:

b,*(--ptr)沒辦法引用第一個元素··

9、 設有語句: int x[] = {1, 3, 5, 7, 9, 11, 13}, *p = x; 那麼,不能正確引用陣列x的合法元素的表示式

8樓:青木主

這聽起來像是一道選擇題?可是沒有選項啊……

若有說明int a[3][4] 則對a陣列元素的正確引用為

9樓:達豐

二維陣列引用基本格式:陣列名[行標][列標]。

行標和列標都是從0開始,最大下標為行(列)標長度-1。

比如:a[0][1],表示第一行第二列的陣列元素。

二維陣列:

由行和列組成的二維**形式的元素,其實也就是矩陣。

基本格式:

資料型別 陣列名[行長度][列長度];

行長度為二維陣列行的個數,必須為常量表示式,不能為變數。

列長度為二維陣列每一行列的個數,必須為常量表示式,不能為變數。

二維陣列包含的元素的個數是:行長度*列長度,其中每個元素佔據的位元組數是sizeof(資料型別),故二維陣列佔據的內在位元組數是 行長度*列長度*sizeof(資料型別)。

舉例:定義一個二維陣列a,包含4行4列的元素,每個元素均為int型別int a[4][4];

10樓:韓信靳婉

若有說明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("\n");

}程式2.

//定義為全域性性質的陣列

#include

inta[5];

//定義為全域性性質的陣列

void

main()

printf("\n");}

c語言程式題

11樓:

*ptr=x;//這裡ptr指向的是x陣列的開始地址也即是陣列中第一個元素的地址

*(ptr--) //ptr--是現將ptr當前地址的資料輸出,內在把容地址減1

*(--ptr)//*(--ptr)是ptr地址值先減1,在輸出地址裡的值,顯然地址已經是開始地址值,在減1輸出的東西已不是陣列中的元素。

12樓:匿名使用者

選項d 先讓ptr減一,此時ptr不指向陣列x,當然無法取得x陣列元素了

13樓:匿名使用者

因為d的--是前置的,所以要在當前值上減掉1,指標指的是x的首地址。再減掉1就錯誤了。後置的--則要到下個語句再執行。所以b取的就是x[1]的值

14樓:匿名使用者

*ptr=x;是把x陣列的首地址,給ptr指標。而*(--ptr)是引用x陣列首地址的前一個地址的值

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

15樓:匿名使用者

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。

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

16樓:匿名使用者

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

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

第二個元素就是答10

17樓:匿名使用者

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

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

18樓:巫馬尓絲

*((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[10]={0,1,2,3,4,5,6,7,8,9},*p=a;則輸出結果不為5的語句

19樓:瀚漠

答案:d

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

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

20樓:假面

答案:d

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

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

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

21樓:處搖胼手胝足

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

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

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

22樓:匿名使用者

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 a[]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中 0≤i≤9, 則對a陣列元素正確的引用是( )

23樓:

正確的是 a) a[i];

b) &a[i] 這個是個地址

c) p[i-1] 這個可能會越界 i=0時 p[-1]越界d) a[10] 越界

24樓:假面

選擇a) a[i]

b) &a[i] 這個是個地址

c) p[i-1] 這個可能會越界,i=0時,p[-1]越界d) a[10] 越界

陣列元素也是一種變數, 其標識方內法為容陣列名後跟一個下標。下標表示了元素在陣列中的順序號。陣列元素通常也稱為下標變數。

必須先定義陣列, 才能使用下標變數。在c語言中只能逐個地使用下標變數,而不能一次引用整個陣列。

已知intx5,y5,z5執行語句xyz後

x y z x x y z x 5 5 5 5 c語言中 int x 5,y 5,z 5 執行語句x y z 後x的值是多少?因為 運算 符的優先順序copy低於 所以 bai,先算y z 5 5 10 x y z x 10 x x 10 5 10 5 表示取模後,結果du還賦值給左zhi變數 表示...

已知隨機變數X服從正態分佈N22PX

隨機變數x服從正態分佈n 2,2 2,p x 0 p x 4 1 p x 4 0.16.故答案為 0.16 已知隨機變數x服從正態分佈n 2,2 p x 4 0.84,則p x 0 等於 隨機變數x服從正態分佈n 2,2 2,p x 0 p x 4 1 p x 4 0.16.故答案為 0.16 已知...

已知角終邊上一點Px,3x0且cos

因為角 終邊bai上一點p dux,3 x 0 且zhicos dao 1010 x,內所以cos xx 9 1010x,所以x 1,當x 1時 sin 3 10 3 1010 tan 3.當x 1時,容sin 3 1010 tan 3.理工學科是什麼 理工學科是指理學和工學兩大學科。理工,是一個廣...