首先來分別看一下,指標陣列的乙個小例子:
#include
#include
int lookup_keyword(const char*key, const char* table, const int size) ;
printf("%d\n", lookup_keyword("static", keyword, dim(keyword)));
return 0;
} 陣列指標:
#include
int main()
這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了程式設計客棧,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。
指fjcgcklxx針陣列:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標
陣列指標:a pointer to an array,即指向陣列的指標
還要注意的是他們用法的區別,下面舉例說明。
int* a[4] 指標陣列
表示:陣列a中的元素都為int型指標
元素表示:*a[i] *(a[i])是一樣的,因為優先順序高於*
int (*a)[4] 陣列指標
&nb程式設計客棧sp; 表示:指向陣列a的指標
程式設計客棧; 元素表示:(*a)[i]
注意:在實際應用中,對於指標陣列,我們經常這樣使用:
typedef int* pint;
pint a[4];
這跟上面指標陣列定義所表達的意思是一樣的,只不過採取了型別變換。
**演示如下:
#include
using namespace std;
int main()
;int *a[4]; //指標陣列
int (*b)[4]; //陣列指標
b=&c;
//將陣列c中元素賦給陣列a
for(int i=0;i<4;i++)
//輸出看下結果
cout<
注意:定義了陣列指標,該指標指向這個陣列的首位址,必須給指標指定乙個位址,容易犯的錯得就是,不給b位址,直接用(*b)[i]=c[i]給陣列b中元素賦值,這時陣列指標不知道指向**,除錯時可能沒錯,但執行時肯定出現問題,使用指標時要注意這個問題。但為什麼a就不用給他位址呢,a的元素是指標,實際上for迴圈內已經給陣列a中元素指定位址了。但若在for迴圈內寫*a[i]=c[i],這同樣會出問題。總之一句話,定義了指標一定要知道指標指向**,不然要悲劇。
本文標題: 簡單分析c語言中指標陣列與陣列指標的區別
本文位址:
C語言中指標陣列與陣列指標
1 指標陣列的實質是乙個陣列,這個陣列中儲存的內容全部是指標變數。2 陣列指標的實質是乙個指標,這個指標指向的是乙個陣列。1 int p 5 int p 5 int p 5 2 一般規律 int p p是乙個指標 int p 5 p是乙個陣列 3 如果核心和 結合,表示核心是指標 如果核心和 結合,...
C語言中指標和陣列
首先,明確乙個概念,指標是什麼,一旦提到這個老生常談且富有爭議性的話題,那真是1000個人有1000種看法。在國內的很多教材中,給出的定義一般就是 指標就是位址 從初步理解指標的角度來說,這種說法是最容易理解的,但是這種說法明顯有它的缺陷所在。指標就是位址 這種說法相當於 指標 字面值位址 或者說乙...
C語言中指標與陣列注意地方
一開始我以為兩個spi data out是沒有區別的。都是指標,乙個是常量,乙個是變數而已。沒有太在意。如果有人單看spi data out 0 這個有問題的話我覺得你c語言跟我一樣差。相對於這兩個指標而言這個陣列操作沒有問題。但問題出在哪呢?就是那一長串的字串。把這些一結合就產生了各種問題 程式跑...