C語言裡面陣列與指標的問題,為什麼陣列名與陣列名輸出是值,如圖所示

2021-05-27 16:48:08 字數 3187 閱讀 4234

1樓:金色潛鳥

宣告裡定義了 int a; 所以 a 是一維陣列語句裡, a 是 一維陣列 的名字,所以它代回表 a 陣列 的首地址。答

(如果 宣告 是 int a; 是簡單 變數,則 語句裡 a 表示 變數 a 的 值)

語句裡,&a 是 求 a 的地址。 對於陣列a,它等於 &a[0] 或 (a+0), 也就等於 a

(如果 宣告 是 int a; 是簡單 變數,則 語句裡 &a 表示 求變數 a 的 地址)

2樓:二笨喵

陣列名代表著陣列的首地址,即&a[0]

建議樓主好好看以下書,等到二維陣列和指標時會更亂

c語言中:陣列指標與指標陣列有什麼區別?

3樓:匿名使用者

陣列指標是指向這個陣列首地址的指標,指向物件是這個陣列;

指標陣列是存放一類指標的陣列,這個陣列的每個元素都是一個指標;

例子:int a[10];

int* s;

s = a;//這裡s就是一個陣列指標,它的值就是陣列a 的首地址;當然,如果a是一個整數,那s就是一個指向整型的指標;

int a;

int* s[5];

for(int i=0;i<5;i++)s[i]=a;

//這裡s就是一個指標陣列,它的每個元素都是整型變數a的地址應該算比較明白了吧

謝樓上提醒

4樓:天雲一號

int (*p)[4]; // 定義一個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。

int *p[4]; // 定義一個指標陣列,陣列中每個元素是一個指標,指標指向**就要根據程式來定了。

判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。

int (*p)[4]; // 由於( )的優先順序高,說明p是一個指標,指向一個一維陣列的指標

int *p[4]; // 由於[ ]的優先順序高,先與p結合成為一個陣列,再由int*說明這是一個整型指標陣列

5樓:匿名使用者

1.大概說一下這三種

int * a;            這叫整型指標   這玩意兒不能指向陣列,搞清楚指向的是陣列首元素

int (* b);       這叫整型陣列指標     意思是指向陣列的指標

int * c[5]=null;          這叫整型指標陣列     意思是儲存指標的陣列

下來舉個例子,理解一下:

2.定義一個陣列,下面舉例解釋

int i[5]=;        //定義整型陣列,五元素皆為0

int n[5][5]=;            //定義二維陣列

3.三種分別舉例

(a的例子)

a=i;         //這裡i是陣列名,i相當於&i[0]。陣列名相當於是陣列i的首地址。此時* a指向陣列i首元素。

a++;然後輸出就是i[1]的值

(b的例子)

b=n;        //二維陣列名相當於n[5]這個陣列,注意這塊兒,這塊兒最難搞清楚。n代表的不是第一行第一個元素的地址,而是代表第一行元素的所有地址的陣列。這塊的指標陣列b相當於存放了n陣列第一行的所有元素的地址。

//這塊的陣列指標b和上面的指標a比較,a指向的是陣列的首元素,而b指向的是整個陣列(或者說是存放了整個一維陣列的多個元素(二維陣列由一維陣列構成,二維陣列的第一行即是一個一位陣列))

然後我們輸出(* b)[2]相當於輸出了n[0][2]

如果b++然後輸出(* b)[2]相當於輸出了n[1][2]

c的玩法:

太簡單了,不想說了。就是存放多個指標的陣列,自己想想。

6樓:匿名使用者

摟主先要明確每個詞的後面一個名詞代表其所要定義的型別陣列指標就是指向一個陣列首地址的指標(aa);

舉例:char a="hello world";

char *aa;

aa=a;

指標陣列就是一個陣列,這個陣列的元素是指標;

舉例:char a='t';

char *aa[2];

a[0]=a;

a[1]=a;

附:感覺樓上的這段舉例有點問題

int a[10];

int* s;

s = &a;

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

7樓:匿名使用者

陣列名確實表示指向陣列首地址的指標,但這個指標很特別,它的值(指標的值指的是指標所指的地址)不能被改寫,能改寫的僅僅是其指向的內容,換句話說,陣列名只能指向陣列的首地址,如果有陣列char a;那麼如果出現a = a+1;這是編譯都通不過的錯誤。而對於一個普通的指標是可以的,再比如有陣列char a;那麼再定義一個char *p = a;然後再用p = p+1是合法的,這表示讓指標p指向&a[1]。

它們的第二個區別是:每當用到陣列名這個指標的時候,系統都會傳入陣列的資訊,而普通的指標只是一個4位元組的整數,例如:

char a[5];

char *p = a;//指標a和指標p都指向陣列a的首地址cout << sizeof (a) << "##" << sizeof (p) << endl;

這時的執行結果是「5##4」

8樓:塞上孤獨

為什麼陣列名的那個指標不能運算,也就是你說的不能改寫,告訴你那是因為陣列一旦定義了,就放到常量區了,你試試看你能改變常量嗎?

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

9樓:匿名使用者

有兩種情況。。

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

s = p;

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

2、void fun(char a){}

void main()

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

簡單的說就是這樣。。

10樓:匿名使用者

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

11樓:匿名使用者

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

c 指標陣列問題,C 中關於指標陣列的問題。

是錯誤的。char cchar count 宣告瞭cchar是有count個元素的陣列,每個元素都是指向char型變數的指標。但cin cchar i 卻試圖給cchar的第二個元素 指標 賦一個鍵盤值 這裡指標還沒有確定指向,是隨機的,它隨機地指向了不能寫入的地方,就要出錯。這裡應該先給指標陣列賦...

c語言中陣列指標和結構體指標問題

樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...

請教c語言中指標陣列的問題如下

你好,你猜的沒錯,的確是指標問題,你想想哈,temp是一個char,你每一次都把 temp這地址賦值給c i 導致c i 用的記憶體空間始終是temp所在的記憶體空間。fgets temp,6,fp 這語句導致temp記憶體空間存放的是 zzzzz 而每一個c i 都指向temp所在記憶體空間,所以...