-
指針數組
鎖定
- 中文名
- 指針數組
- 外文名
- pointer array
- 主要運用
- 作為函數的參量
- 運用領域
- 計算機編程
- 來 源
- C語言和C++語言
- 本 質
- “數組”
指針數組含義
指針數組,就是説首先是一個數組,而數組的元素是指針,也就是説,如果數組元素都是相同類型的指針,則稱這個數組為指針數組。所謂相同類型的指針是説指針所指向的對象類型是相同的。一維指針數組的定義形式為:
例如二維指針數組的定義為:char *ptr_array[3][3]={{"asdx","qwer","fdsfaf"},{"44444","555","6666"},{"a78x","q3er","f2f"}};
指針數組運用
指針數組常適用於指向若干字符串,這樣使字符串處理更加靈活方便。
指針數組對比
定義不同
所佔存儲空間的區別
數組指針只是一個指針變量,是C 語言裏專門用來指向二維數組的,它佔有內存中一個指針的存儲空間。指針數組是多個指針變量,以數組形式存在內存當中,佔有多個指針的存儲空間.
應用上的區別
指針數組一般用於處理二維數組。指向一維數組的指針變量用於處理二維數組也是非常方便的。
數組指針和指針數組在處理同一個二維數組時,數組指針的元素個數和指針數組的數組長度不相同,數組指針的元素個數和二維數組的列長度相同。 而指針數組的數組長度和二維數組的行長度相同。
char a[3][8]={"gain","much","strong"};
char *n[3]={"gain","much","strong"};
他們在內存的存儲方式分別如圖1所示,可見,系統給數組a分配了
3×8的空間,而給n分配的空間則取決於具體字符串的長度。
此外,系統分配給a的空間是連續的,而給n分配的空間則不一定連續。
由此可見,相比於比二維字符數組,指針數組有明顯的優點:一是指針數組中每個元素所指的字符串不必限制在相同的字符長度;二是訪問指針數組中的一個元素是用指針間接進行的,效率比下標方式要高。 但是二維字符數組卻可以通過下標很方便的修改某一元素的值,而指針數組卻無法這麼做。
指針數組舉例
數組指針:
#include<stdio.h> int main() { char c[][4] = {"哥", "哥", "我", "岸", "上", "走"}; //UTF-8:一個漢字=3個字節 char (*p)[4]; int i; p=c; //將指針定位於c[0] for(i=0;i<=5;i++) { printf("%s, ", *(p+i)); //或者將*(p+i)替換成*p++ } printf("\n"); for(i=5;i>=0;i--) { printf("%s,",*(p+i)); //或者將*(p+i)替換成*--p } return 0; }
指針數組:
#include<stdio.h> int main() { int i; char *pch[6] = {"妹","妹","你","坐","船","頭"}; for(i=0;i<6;i++) { printf("%s, ",pch[i]); } printf("\n"); for(i=5; i>=0; i--) { printf("%s\n",pch[i]); } return 0; }