關於c語言把陣列名賦予指標的問題

2021-03-04 09:21:29 字數 1555 閱讀 3203

1樓:

就是指向一個地址。陣列第一個元素的地址就是陣列地址。

2樓:gta小雞

你的理解從本質來

上就有問題自

int *p1=a不能通過編譯,因為a是二維陣列指標,型別是int (*)[3],無法轉換到int*型。必須用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]無法通過編譯,因為a[0]是一個int指標而不是一個int元素,必須用int *p2=a[0]才可以。

a代表二維陣列,它指向的是一維陣列a[0]的地址,該地址恰好和a[0][0]的地址相等,但型別上有著本質區別,a是一個是int*陣列的指標而a[0]是一個int*元素的指標。a[0]代表的是二維陣列a的第一行,是一個一維陣列,指標a[0]是int*型,它指向該一維陣列的首元,即a[0][0]的地址。

c語言裡面為什麼不能把指標賦給陣列名?

3樓:匿名使用者

有兩種情況。。

1、char *p = "123"; char s[4];

s = p;

這種情況是不合法的。。此時的陣列名雖然也是指標,但應該看成指標常量,是不能修改的。。

2、void fun(char a){}

void main()

陣列作為函式引數的時候,是可以把指標變數賦值給它的,這時陣列名就可以看作一般的指標變數了。。

簡單的說就是這樣。。

4樓:匿名使用者

陣列名是常量,也就是常指標。給常數賦值自然是錯誤的。

5樓:匿名使用者

他是個常指標,是個常量,不能賦值的

c語言:關於二維陣列的指標問題, 對於一維陣列來說,陣列a[i]的陣列名a就是陣列首元素的首地址,

6樓:匿名使用者

二維陣列,就是指陣列元素為 陣列 的 一維陣列,就按一維陣列的方式版去理解就可以了。

如:權int a[5][10] ; 可以看成 type b[5] ; type的型別為int [10] ;

陣列a[0],a[1],a[2]。。。都是一維陣列,也就是一維陣列的首地址

對應的指標方式為:*(a+0), *(a+1),*(a+2)....

如有問題,再追問!

7樓:匿名使用者

首先二維數du組是不是可zhi以看成幾個一維陣列dao的結合

比如a[3][4]是不是代表3個一維專陣列,一維陣列的大小是4那麼屬第一個陣列的陣列名是a[0],然後a[0]這個陣列裡面有四個元素分別為,第二個陣列名是a[1],以此類推

二維陣列相當於也是一個陣列,裡面裝的都是一位陣列a[3] = ,這裡的a[0]-a[3]是三個一維陣列,那麼*(a+i)就是a[i],a[i]就是一維陣列名,陣列名是不是就是地址,那麼*(a+i)就是地址,*(a+i)+j 是不是等價於a[i]+j ,a[i]我們剛才說了是一維陣列名,也就是地址,一個地址加上j是不是還是地址呢?*(a+i)+j = &a[i][j]的

C陣列名和指標的區別,CC中,陣列名和指標的區別

陣列名確實表示指向陣列首地址的指標,但這個指標很特別,它的值 指標的值指的是指標所指的地址 不能被改寫,能改寫的僅僅是其指向的內容,換句話說,陣列名只能指向陣列的首地址,如果有陣列char a 那麼如果出現a a 1 這是編譯都通不過的錯誤。而對於一個普通的指標是可以的,再比如有陣列char a 那...

C中,陣列名和指標的區別,CC中,陣列名和指標的區別

一維陣列 可以認為是常量一維指標.即除了不能修改值,其他都可以當指標操作.多維陣列,可以認為是對應的陣列指標.陣列名和指標最大的區別是,陣列名自身不佔用記憶體空間,即 陣列名得到的地址還是陣列名值本身,亦即陣列首地址.而指標是有自己的記憶體空間的,指標變數,得到的是另外一個地址.c 陣列名和指標的區...

C語言裡陣列名是地址嗎,C語言中陣列名和指標的區別

是地址,可以稱作陣列地址,也可以看成第一個元素的地址。舉個例子 include int main int argc,char argv p array printf p 2 d n p 2 return 0 這個程式輸出結果如下 p 2 3 程式的第六行 p array 就是把陣列地址賦值給地址變數...