二維陣列中第i行行指標與第i行第0列元素指標有什麼區別

2021-04-21 23:04:12 字數 2514 閱讀 7110

1樓:匿名使用者

首先抄陣列名編譯器會隱式變襲換看做指標常量,因此a[i]與a+i是等價的。

a+i返回由i指定的行地址,假設元素型別為char,則行指標型別為char (*)[n],其中n為列寬,即每行元素數量。當行指標指向一個地址時,此時該行首元素地址與行地址是一致的,但是型別不同,很重要,你必須要明確,這個是理解二維陣列指標的關鍵。

星號在指標前含義為取指標指向記憶體中的值,但是由於行指標指向的是一行元素整體而不是單個元素,因此*(a+i)返回i指定行的所有元素,但是一行元素是不可能以值的形式直接獲得,所以編譯器返回的是一維陣列指標char *,所以再此情形下你可以理解為星號是將行指標轉換為普通一維陣列指標,即 char (*)[n]轉換為 char *。

&a[i]返回i指定行的第一元素地址,與&a[i][0]等價。

二維陣列中第i行的起始地址與第i行0列元素的地址區別

2樓:匿名使用者

值一樣但是地抄

址是不一樣的。

解釋:對於 array[i][j]這樣一個二維陣列,array[i]與&array[i][0]的值是一樣的。但是array[i]本身就是一個地址,而array[i][0]是陣列i+1行的元素,對其取地址的話,還要使用&符。

所以地址並非同一個的。

3樓:方建平

不一樣例如陣列

為baia[9][9]

a表示du整個陣列的起zhi始地dao

址,a+i表示陣列第i+1行的起始地址。

而&a[0][0]表示第一行專首地址

&a[0][0]+1表示a[0][1]的地址了系統可屬以辨別他們的型別,所以在加減時移動單位是不同的~~

4樓:

型別不同

bai。

以int a[5][5]為例,a[3]是第4行元素du的起始地址zhi,類dao型與回變數int *p[5]相同

a[3][0]的地址型別與int *p相同。一個是指向答一維陣列的指標,一個是指向整型變數的指標。

5樓:匿名使用者

對於 a[i][j]這樣一個二維陣列,a[i]與&a[i][0]的值是一樣的。但是a[i]本身就是一個地址,而a[i][0]是陣列的元素,對其取地址的話,還要使用&。

二維陣列中第i行行指標與第i行第0列元素指標有什麼區別?

6樓:匿名使用者

意義不同 但是內容相同 就相當於 你爸的兒子 和 你 的關係

c語言的行指標與元素指標有什麼區別?

7樓:匿名使用者

先舉個例子吧,先定義一個二維陣列int a[3][4]=,,}陣列名a就是一個行指標,a[0]就是一個列指標;

就拿這個例子說吧,a和a[0]雖然地址相同,可是指標指向型別卻不同,對指標進行+1運算,顯然得到的結果是不同的,因此a(行指標)+1中的"1」代表一行中全部元素所佔的位元組數,而a[0]+1,這裡的1則是一個元素所佔的位元組數,是兩個不同的概念。

為了說明這個容易搞混的問題,可以用軍訓中排隊點名來說明。班長逐個檢查本班戰士是否在佇列中,班長每移動一步,走過一個戰士,而排長點名只檢查本排各各班是否到齊。排長只從第0班的起始位置走到第1個班的起始位置,看來只走了一步,但實際上他跳過了10個戰士,這相當於a+1,班長面對的戰士,排長面對的是班,班長相當對列指標,排長相當於行指標。

為了找到某個班內的某一個戰士,必須給出兩個引數

8樓:鍵盤雀躍

^int a[4]=

1 2 3 4

^ ^

a[0] a[1] a[2] a[3]a是一維陣列名,代表陣列的首地址.也就是a[0]*(a+1) 指標移動2個位元組,指向下一個陣列元素,就是a[1]int a[3][4]=,,}

^ ^

*a[4] 或a[4] 或a[3][4] 都可以表示行指標.操作a是二維陣列名,代表二維陣列的首地址,也就是a[0][0] = 1

*(a+1)[4] 指標指向a[1][0] = 5 ,也就是指向下一行陣列元素的首地址.一次跳躍到下一行.

9樓:匿名使用者

行指標與元素指標的區別實質上就是指 【陣列】與【普通指標】的區別。

區別:1、指標的本質是一個與地址相關的複合型別,它的值是資料存放的位置(地址);陣列的本質則是一系列的變數。

2、陣列名對應著(而不是指向)一塊記憶體,其地址與容量在生命期內保持不變,只有陣列的內容可以改變。指標可以隨時指向任意型別的記憶體塊,它的特徵是"可變",所以我們常用指標來操作動態記憶體。

3、當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。

10樓:匿名使用者

行指標是指向一行的,假設指標為p,那麼p++就向下移m*d(m為那一行的元素個數,d每個元素佔的記憶體單元)

指向元素的指標 p,那麼p++就是指向下一個元素

也就是說p移動的位元組不一樣

c語言中關於二維陣列指標

二維陣列其實在記憶體中等同於一維陣列,僅僅是在編譯階段就幫你轉換掉了。a 3 4 記憶體分配時等同於a 3 4 上面的 應該改寫成printf d p i 4 j p i j 這種寫法系統理解為先取 p i 取p i該位置的值,假設 i 2,那麼該值就是3,然後再去用3 j,假設j 1,那麼 p i...

用指標對二維陣列進行氣泡排序,函式自己定義,在排序時不允許用變數

define m 3 define n 3 int ar m n int main int argc,char argv for i 0 i m n i printf d p i system pause return 0 c語言 請使用指標變數將二維整數陣列進行氣泡排序 對於任意的物件a,寫作 a...

輸入4 4二維整型陣列,用指標變數查詢並輸出陣列中沒每行最大的值。要用指標變數

此題是填空,不是重寫!從上到下依次填 p a pq p q p 4 q if max q max q 或max max q q max 執行樣例 include include include int main 以上 塊 為了減少輸入,用隨機數填充4 4二維陣列for i 0 i 4 i print...