linux 陣列和指標

2021-08-09 13:28:03 字數 1730 閱讀 5591

1.陣列和指標分別怎麼定義?

陣列:char a=;

二維陣列:char a=;

定義陣列時,陣列的長度是一定值,不能是乙個變數,否則無法通過編譯。

注意,陣列的下標總是從0開始。

指標:char *p;

如果p=a;(a是乙個字元陣列)那就是p指向字元陣列a中的字串,且指向第乙個元素。

2.指標和陣列有什麼聯絡?

1).當陣列出現在乙個表示式中時,它和指向陣列中第乙個元素的指標是等價的。因此陣列和指標幾乎可以互換使用。另外,使用指標要比使用陣列下標快兩倍。

2).將陣列作為引數傳遞給函式和將指向陣列第乙個元素的指標傳遞給函式是完全等價的。將陣列作為引數傳遞給函式時可以採用值傳遞和位址傳遞兩種方式,前者需要完整地複製初始陣列,但比較安全;後者的速度要快得多。

3).但陣列和指標也不是完全等價的。假如在原始檔中定義char a【max】;而在標頭檔案中定義extern   char *a;那執行程式時將會出現錯誤。

3.關於二維陣列中的一些問題

定義乙個二維陣列,char a;則有 a=&a,a=&a,以此類推,可以得到a+1=&a,a+1=&a

4.為什麼要小心對待位於陣列後面的那些元素的位址?

在有些計算機上,位址的分配是以一種稱為段位址結構的形式分配的,該位址由兩部分組成:第一部分是乙個指向某一塊記憶體的起始點的指標(即基位址),第二部分是相對於這塊記憶體的起始點的位址偏移量。假設基位址存放著陣列a,因為基位址無法改變,而且位址偏移量也不可能是負的,所以位於a前面的元素就沒有意義了,同理,如果陣列a放在了這塊記憶體的尾部,那&a【max】(max是陣列a的長度)就是沒有意義的。

5.指標陣列是以什麼為結束標誌的?

怎樣定義乙個字元陣列?char  *a;

指標陣列是以空指標null為結束標誌的,正如字串中是以空字元'\0'為結束標誌的。

6.指標的運算

當定義乙個指向陣列的指標時,可以採用p++或者p--(p是指標)的形式,從而遍歷整個陣列。

當兩個指標都指向同乙個陣列中的元素時,才允許從乙個指標減去另乙個指標,運算出來的值是兩個指標在記憶體中的距離(以陣列元素的長度為單位)

7.常量指標和指標常量的區別

常量指標:const char *p  p是乙個常量指標,即指向乙個常量的指標,該常量不能被改變。

指標常量:char * const p=a p是乙個指標常量,即p這個指標本事是乙個常量,不可以被修改,但它指向的內容可以被修改。

8.什麼是空指標?

在程式中,需要使用一種不指向任何物件的指標,這種指標被稱為空指標,空指標的值是null。

指標的值不能是乙個整型值,但空指標是個例外,即空指標的值可以是乙個純粹的0,在編譯時產生的任一乙個表示式,只要它是0,就可以作為空指標的值。在程式執行時,最好不要出現乙個為0的整型值。null不是被定義為0就是被定義為(void*)0。許多函式的返回值是乙個指標,當函式呼叫失敗時,返回乙個空指標,否則返回乙個有效指標。

如果返回值是乙個整型值,呼叫失敗時返回乙個非0值,否則返回乙個0值。

9.指標陣列和陣列指標

指標陣列:元素都為指標的陣列。char *a;

陣列指標:乙個指向乙個陣列的指標。char (*a); a指向乙個有20個元素的陣列。

10.函式指標和指標函式

函式指標:指向函式的指標。int (*p)(int a);定義乙個指向返回值為int,引數為int型的指標p。

指標函式:返回值為指標的函式。int * fun (int a);定義乙個返回值為int*型,引數為int型的函式。

陣列指標和指標陣列

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...

陣列指標和指標陣列

一 定義 陣列指標 陣列指標 是指向陣列 首元素的位址的 指標,其本質為指標 這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動 指標陣列 陣列元素為指標的陣列,其本質為陣列。二 舉例 int a 3 4 這個無需多說,就是乙個 二維陣列 int p 4 就相當於int p 4 它就...

陣列指標和指標陣列

這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...