設有以下定義 int a,設有以下定義 int a 2 3 , p 3 p a 則對a陣列元素的非法引用是( )

時間 2021-05-05 23:20:56

1樓:

a啊!這位出題先生太忽悠人了,你沒有發現表示式中的a是大寫的嗎?沒定義啊……哈哈……

int a[2][3];int * p=a與int a[2][3]; int (*p)[3]=a;的區別

2樓:匿名使用者

int (*p)[3]是陣列指標,指向有三個元素的陣列 p => a[0]位址 p++ => a[1]位址

int *p是整形指標 p => a[0][0]位址 p++ => a[0][1]位址

所以,p每次移動的位址大小是不同的

int a[2][3],*p;p=a;則對w陣列元素非法引用的是().a) *(p+2)

3樓:聽不清啊

int a[2][3],*p;

p=a; ------- 這個語句才是非法引用。皮之不存,毛將焉附?下面的問題就沒法回答了。

4樓:匿名使用者

p是陣列a的首位址,指向a[0][0],p+2只是移動到了2*sizeof(int)的位置。也就是a[0][2]

int a[2][3] int (*p)[3] = a;

5樓:匿名使用者

p表示首位址,二維陣列實際是一維連續放置,比如也為19*19圍棋棋盤第ij個元素轉為連續放置為19*i+j

6樓:匿名使用者

a[3][2]=,,};

int (*p)[3] = a;(*p)代表的是行bai;則p指標du指向的是函式3個元

zhi素dao(每個元素兩個值)的陣列;專*(p+1)為這個陣列第二屬個元素()的首位址,(*(p+1)+1)為裡的第二個元素,為4。

若有定義int a[2][3],則合法引用陣列元素 a.a[0][1/2]

7樓:小螞蟻

應該選擇a,陣列下標可以是整型常量或整型表示式。1/2是整形常亮表示式,其餘的選項都越界

若有定義int a[3][4];下列敘述中不能表示陣列元素a[1][1]的是 5

8樓:匿名使用者

只有d不能表示陣列元素a[1][1],表示的是a[1][1]的位址,而不是陣列元素a[1][1]。

a、b、c都能表示陣列元素a[1][1]選d

9樓:

d*(a+5)指a[1][0]

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

10樓:匿名使用者

a[2][4]越界了

最後乙個元素a[2][3]

引用時下標從0開始

第一行a[0][0] a[0][1]...

第三行a[2][0] a[2][1]...

為何i的結果為1而不是8,c語言的規定?

11樓:疏金生禮鸞

p,q為兩個指標,開始是分別指向a,b陣列的首位址。

重點看if那句,意思是當(p+i)位址的值和(q+i)的值相等時,x=這個值*2

什麼時候相等呢,3的時候

因此x應該等於6選d

12樓:樂於分享

不是c語言規定的,定義指標p,q,通過p=a,將陣列的首位址賦給了p指向陣列第乙個數1,q=2,定義i為整數,即i=2-1=1

13樓:恆者致遠

陣列指標的加減法是以陣列存放的資料的型別為準的,如果a+1指向的記憶體空間是什麼 ,你就明白為什麼不是8了

14樓:

指標的移動是以這個指標指向的變數型別的長度sizeof(type)為單位的,如果這個型別長度為4,那麼指標增加1,就是向後移動4個位元組。

反過來計算兩個指標之間距離的時候,也是以sizeof(type)為單位的。

另外,你這個**的結果,q-p應該是2,而不是1

15樓:葉子一哥

兩個指標不能進行加法運算,這是非法操作,因為進行加法後,得到的

結果指向乙個不知所向的地方,而且毫無意義。兩個指標可以進行減法

操作,但必須型別相同,一般用在陣列方面,不多說了。

16樓:雪狼

你這個陣列定義的是想3個數1,2,3還是4個數1,2,3,0?

設有定義語句int c[4][3];,則以下對陣列元素的引用形式中正確的是( a)。 a) c[

17樓:酷哥

二維陣列的引用方式必須為c,則可排除bd,陣列下標都是從0開始的,所以c超出範圍,因此選a

18樓:聽不清啊

引用形式中正確的是( a)。

c[3][0]是陣列中的乙個成員。

19樓:匿名使用者

選a,b和d明顯非法。。。c超過了範圍哦。。a就是c[3][0]

設有如下定義 intptr則以下敘述中正確的是

墨汁諾 c。ptr函式返回一個int 型資料 這個才是正確的,理由是int fun 顯然是一個函式說明,fun換為 ptr 則ptr就是指向函式的指標了。int ptr m ptr是一個指向m長度的線性記憶體空間,即m大小的一維陣列 int ptr ptr是一個返回值為int 引數列表為空的函式指標...

設有如下定義 int pp 100則printfd ,p的輸出結果是100,對麼?為什麼

隔壁小鍋 int p p 100 則 printf d p 的輸出結果是100是不對的,p宣告為一個int型指標,但是沒有指向具體的記憶體空間。int型別在記憶體中佔用了4個位元組,也就是32位。int型別是有符號的,因此,32位並不會全部用來儲存資料,使用最高位來儲存符號,最高位是0,提示資料是正...

若有以下定義,則計算表示式y y m y後的y值

從左往右分解,y y m y 就是 y y y m y y m y 就是 y y m y m y 就是 m m y 那麼就等於 m m y m 10,y 2 y y m m 10,y 8 y y y m 10,y 16 y為 16 表示式從右向左計算也就是程式中的y y m y 相當於 m m y ...