array name和 array name的異同

2021-07-09 01:08:53 字數 1125 閱讀 5235

看到關於這兩個的介紹,以前沒注意到這個問題。

char a[max];        /*array of max characters*/

char *p = a;         /*p

為指向陣列的指標

*/ char *pa = &a;      /*

該語句是不正確的,

pa的型別為

'char *'

,而&a

的型別為

'char (*)[max]』*/

char (*pb)[max] = &a;       /*

該語句是正確的,

pb的型別為

'char (*)[max]'*/

#include#define array_len 6

int main();

char *p=a;

char *pa=&a;

char (*point_to_str)[array_len];

point_to_str=&a;

printf("%p\n%p\n%p\n%p\n%p\n%p\n%p\n",a,&a,&a[5],p,&pa, &point_to_str);

printf("\n\n %p %p %p %p\n",a,&a[0],a+1,&a+1);

printf("%s\n%s\n", p, point_to_str);

}

0x7fff1c1107b0

0x7fff1c1107b0

0x7fff1c1107b5

0x7fff1c1107b0

0x7fff1c1107a8

0x7fff1c1107a0

0x400665

0x7fff1c1107b0  0x7fff1c1107b0 0x7fff1c1107b1  0x7fff1c1107b6

a和&a的值是一樣的,但是型別不一樣,乙個是char的指標 char*,乙個是整個陣列的指標

char (*)[array_len]

。可以用+1體現不一樣之處

&a[0]+1  ==   (int)(&a[0])  + sizeof(a[0])

&a+1  ==   (int)(&a)  + sizeof(a)

Array和List的區別

array和list都屬於順序表。因為list是乙個鍊錶,所以我需要從第乙個元素開始逐個next到所需索引的元素。這是乙個耗時的過程。陣列必須要在初始化時分配固定的大小,比如說int a new int 3 如果我們僅僅寫int a new int 編譯器就會無情地給我們報錯。但是list由於空間不...

Array和List的異同

array和list的異同 array的建立格式是 型別 eg string array new string 5 可以在建立時限定長度,但在後面使用中不可以更改。直接賦值 不適用於二維陣列 引用賦值。只能選其一,且不能重複賦值。可以放基本型別資料和物件。list建立格式是 型別 泛型 eg lis...

Array和List的轉換

呼叫list的toarray 方法,可以直接規定引數陣列大小為1,如果不夠,方法將自動建立合適大小的陣列 listlist new arraylist list.add aaa list.add bbb string s list.toarray new string 1 for string ss...