c語言行指標和列指標,C語言行指標和列指標

2021-03-03 20:48:15 字數 2953 閱讀 2530

1樓:劉文正粉絲

&在任何時候

抄都不能定址, 它是用bai來取地址的.

p[i]在任du何時候zhi

都等價dao於*(p+i)

p[i][j] (其中p是int*[x]型別的)在任何時候都等價於*(*(i*x)+j)

x是一個變數.

int a[10][20]

這裡x = 20

int a[20][10]

這裡x = 10

c語言沒有什麼行指標, 列指標.

一維陣列就是一級指標,

二維陣列是特殊的二級指標,

以此類推......

c語言中的列指標是指向元素的指標嗎,怎麼區別行指標與列指標

2樓:村驢

二維陣列的陣列名a和a+1、a+2是行指標,它指向的元素是一個包含4個元素的一維陣列,而*a、*(a+1)、*(a+2)是列指標,即指向元素的指標,相當於一維陣列中指向特定元素的指標。*(*(a+1)+2)是先豎著走一行,再橫著走兩行,相當於a[1][2]。&a[1][0]就是a[1][0]的地址,相當於*(a+1),是一個列指標。

3樓:這個名有人取了

這個三言兩語說不太清楚,推薦你看看這篇部落格

望採納

c語言,指標,分別用行指標變數和列指標變數輸入和輸出二維陣列,行指標變數和列指標變數?我這對嗎

4樓:天天向上知識店鋪

可以的。

在c語言中,二維陣列在表示時可以有很多方法的:

如:a[i][j]可以表示為:*(a[i]+j)、*(*(a+i)+j)、(*(a+i))[j]

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

5樓:匿名使用者

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

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

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

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

6樓:鍵盤雀躍

^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 ,也就是指向下一行陣列元素的首地址.一次跳躍到下一行.

7樓:匿名使用者

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

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

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

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

8樓:匿名使用者

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

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

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

c 語言指標的指標和二維陣列的區別?

9樓:文帝寶寶

指標的指標和二維陣列完全倆東西,二維陣列是 一維陣列的一維陣列,元素是陣列,所以可以隱式轉化為int (*)[3],跟int **兩回事,擴充套件到更多維或其它型別也是成立的,只能隱式轉化為第一維的元素的指標

補充說明下隱式轉化為指標,簡單說就是這樣(t是任意型別)

設有一個陣列t a[10];

a的型別是「t [10]」,在做大多數運算的時候,都先隱式轉化為「t *」型別,即t的指標

對於多維陣列,可以看做是一個一維陣列,陣列的元素型別就是第二維開始的陣列型別,比如:

t a[10][20][30];

是一個有10個型別為「t [20][30]」元素的陣列,用**解釋更清晰:

typedef t u[20][30];

u a[10];

跟上面的定義等價,所以a只能隱式轉化為「u *」,「u *」後也就是「t (*)[20][30]」這個型別了,跟多級指標沒關係,因此,多維陣列不存在到多級指標的轉化規則,強轉只會導致問題

10樓:育知同創教育

二維陣列由若干個一維陣列組成在c語言中定義的二維陣列實際上是一個一維陣列,這個一維陣列的每一個成員又是一個一維陣列。

當變數作為函式的引數時,函式內修改的是形參,實參不變化;(swap(int a, int b))

當指標作為函式的引數時,函式內:若修改指標變數,實參指標指向變數不變。若修改指標指向,實參指標指向的變數變化。(swap(int *a, int *b))

c語言空指標野指標通用指標,C語言 空指標

野指標就是不知道指向 或者說不知道指向的記憶體是否可以使用,一般都是剛剛宣告但沒有初始化的指標。空指標不是指向常數0,只指向地址0,即null,其實換句話說,指標的本質就是地址嘛,空指標就是指標本身的值 地址 為0 空指標的作用是防止野指標的出現,因為我們不能知道野指標到底指向 所以我們也無法判斷一...

c語言指標和函式的問題,C語言指標和函式的問題。!

樓主你好。include int main printf 修改前,陣列元素的值 段1 print array a,5 printf 修改後,陣列元素的值 段2 change values a,5,3 print array a,5 return 0 函式功能 修改一位陣列元素的值,規則是 新值 原值...

C語言指標

正如您所說 a是一個常量,常量是不能修改的變數。不可以修改,不代表不可以引用呀,a i 只是借用a的值 陣列的首地址 來訪問其他成員,實際上並沒有改變a的值。但是換成a 執行之後a的值就改變了,被修改了,編譯當然通不過啦。這道題中的a是陣列的首地址,要是改變a的值,那陣列不是也改變了嗎?所以,一定是...