1. 定義方式不同:指針數(shù)組是一個元素為指針類型的數(shù)組,而數(shù)組指針是一個指向數(shù)組的指針。
2. 數(shù)據(jù)類型不同:指針數(shù)組中每個元素都是一個指針,而數(shù)組指針本身是一個指向特定類型數(shù)據(jù)的數(shù)組。
3. 訪問元素不同:在訪問指針數(shù)組時,需要首先訪問該元素所在的位置,然后使用間接引用操作符(*)來訪問該元素所指向的值;在訪問數(shù)組指針時,可以直接使用下標(biāo)操作符[]訪問其所指向的數(shù)組中的元素。
4. 內(nèi)存布局不同:對于指針數(shù)組,每個元素都是一個獨(dú)立的內(nèi)存位置,其值存儲了相應(yīng)對象或變量地址;而對于數(shù)組指針,它本身也是一個變量,并且存儲了整個數(shù)組的地址。
1 數(shù)組指針是指一個指向數(shù)組的指針變量,指針數(shù)組是指一個數(shù)組,該數(shù)組的元素都是指針類型。2 數(shù)組指針的聲明方式為:類型 (*變量名)[數(shù)組長度];指針數(shù)組的聲明方式為:類型 *變量名[數(shù)組長度];3 數(shù)組指針的使用方式為:可以通過指針運(yùn)算符*對指針進(jìn)行間接訪問數(shù)組元素,例如:*arrPtr[0];指針數(shù)組的使用方式為:可以直接訪問數(shù)組元素即指針變量,例如:arrPtr[0]。4 區(qū)別在于數(shù)組指針是指向一個數(shù)組的指針,而指針數(shù)組則是一個數(shù)組,其中每個元素都是指針類型。因此,在使用時需要根據(jù)語境來判斷使用哪種方式。
指針數(shù)組和數(shù)組指針的區(qū)別如下:
1. 定義方式不同:指針數(shù)組是一個元素為指針類型的數(shù)組,而數(shù)組指針是一個指向數(shù)組的指針。
2. 數(shù)據(jù)類型不同:指針數(shù)組中每個元素都是一個指針,而數(shù)組指針本身是一個指向特定類型數(shù)據(jù)的數(shù)組。
3. 訪問元素不同:在訪問指針數(shù)組時,需要首先訪問該元素所在的位置,然后使用間接引用操作符(*)來訪問該元素所指向的值;在訪問數(shù)組指針時,可以直接使用下標(biāo)操作符[]訪問其所指向的數(shù)組中的元素。
4. 內(nèi)存布局不同:對于指針數(shù)組,每個元素都是一個獨(dú)立的內(nèi)存位置,其值存儲了相應(yīng)對象或變量地址;而對于數(shù)組指針,它本身也是一個變量,并且存儲了整個數(shù)組的地址
數(shù)組指針(也稱行指針)定義 int (*p)[n];()優(yōu)先級高,首先說明p是一個指針,指向一個整型的一維數(shù)組,這個一維數(shù)組的長度是n,也可以說是p的步長。也就是說執(zhí)行p+1時,p要跨過n個整型數(shù)據(jù)的長度。
如要將二維數(shù)組賦給一指針,應(yīng)這樣賦值:int a[3][4];int (*p)[4]; //該語句是定義一個數(shù)組指針,指向含4個元素的一維數(shù)組。p=a; //將該二維數(shù)組的首地址賦給p,也就是a[0]或&a[0][0]p++; //該語句執(zhí)行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]
所以數(shù)組指針也稱指向一維數(shù)組的指針,亦稱行指針。
指針數(shù)組定義 int *p[n];[]優(yōu)先級高,先與p結(jié)合成為一個數(shù)組,再由int*說明這是一個整型指針數(shù)組,它有n個指針類型的數(shù)組元素。這里執(zhí)行p+1時,則p指向下一個數(shù)組元素,這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變量可以用來存放變量地址。但可以這樣 *p=a; 這里*p表示指針數(shù)組第一個元素的值,a的首地址的值。如要將二維數(shù)組賦給一指針數(shù)組:int *p[3];int a[3][4];p++; //該語句表示p數(shù)組指向下一個數(shù)組元素。注:此數(shù)組每一個元素都是一個指針for(i=0;i<3;i++)p[i]=a[i]這里int *p[3] 表示一個一維數(shù)組內(nèi)存放著三個指針變量,分別是p[0]、p[1]、p[2]所以要分別賦值。
這樣兩者的區(qū)別就豁然開朗了,數(shù)組指針只是一個指針變量,似乎是C語言里專門用來指向二維數(shù)組的,它占有內(nèi)存中一個指針的存儲空間。指針數(shù)組是多個指針變量,以數(shù)組形式存在內(nèi)存當(dāng)中,占有多個指針的存儲空間。還需要說明的一點(diǎn)就是,同時用來指向二維數(shù)組時,其引用和用數(shù)組名引用都是一樣的。比如要表示數(shù)組中i行j列一個元素:*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]
優(yōu)先級:()>[]>*
1 數(shù)組指針和指針數(shù)組都是指向數(shù)組的指針,但是它們的定義和用法有所不同。2 數(shù)組指針是一個指向數(shù)組的指針變量,它可以通過指針運(yùn)算符(*)和下標(biāo)運(yùn)算符([])來訪問數(shù)組元素。例如,int (*p)[3]表示一個指向長度為3的int類型數(shù)組的指針。3 指針數(shù)組是一個數(shù)組,它的每個元素都是一個指針,每個指針可以指向不同類型的數(shù)據(jù)。例如,int *a[3]表示一個包含3個int類型指針的數(shù)組。4 因此,數(shù)組指針和指針數(shù)組的區(qū)別在于它們的定義和用法不同,前者是指向數(shù)組的指針變量,后者是一個數(shù)組,它的每個元素都是一個指針。
指針數(shù)組和數(shù)組指針的區(qū)別如下:
1. 定義方式不同:指針數(shù)組是一個元素為指針類型的數(shù)組,而數(shù)組指針是一個指向數(shù)組的指針。
2. 數(shù)據(jù)類型不同:指針數(shù)組中每個元素都是一個指針,而數(shù)組指針本身是一個指向特定類型數(shù)據(jù)的數(shù)組。
3. 訪問元素不同:在訪問指針數(shù)組時,需要首先訪問該元素所在的位置,然后使用間接引用操作符(*)來訪問該元素所指向的值;在訪問數(shù)組指針時,可以直接使用下標(biāo)操作符[]訪問其所指向的數(shù)組中的元素。
4. 內(nèi)存布局不同:對于指針數(shù)組,每個元素都是一個獨(dú)立的內(nèi)存位置,其值存儲了相應(yīng)對象或變量地址;而對于數(shù)組指針,它本身也是一個變量,并且存儲了整個數(shù)組的地址。
數(shù)組指針和指針數(shù)組是兩個不同的概念。
數(shù)組指針是指一個指向數(shù)組的指針,也稱為指向數(shù)組的首元素的指針。它是一個指針變量,存儲的是一個數(shù)組的地址,這個數(shù)組可以是一維或多維數(shù)組。對于一個一維數(shù)組a,其可以用一個指向數(shù)組的指針p來表示,即p=&a[0],p指向a[0],也可以用p[i]來代表a[i],其中i為下標(biāo)。
而指針數(shù)組則是指一個數(shù)組,這個數(shù)組的每個元素都是指針類型。指針數(shù)組中的每個元素都存儲著一個指針,該指針指向內(nèi)存中的某個位置。每個元素的值是一個地址,用于存儲其他變量的地址。例如,int *a[10]表示一個包含10個元素的數(shù)組,每個元素都是指向int類型的指針變量,也就是說,a[0]、a[1]、a[2]……a[9] 都是指向int類型變量的指針。
因此,數(shù)組指針與指針數(shù)組的本質(zhì)區(qū)別在于它們的類型不同。數(shù)組指針的類型是一個指向數(shù)組的指針,而指針數(shù)組的類型是一個包含指針變量的數(shù)組。在使用上,數(shù)組指針更多用于多維數(shù)組的處理,而指針數(shù)組更多用于動態(tài)內(nèi)存分配和指針傳遞等操作。
一維數(shù)組指針
一維數(shù)組的指針是直接將一維數(shù)組的首地址賦予指針變量,之后通過指針變量的運(yùn)算逐漸輸出一維數(shù)組中的各個元素的值。
例如:int a[20];
int *p;
因為數(shù)組名相當(dāng)于一個指針指向的就是一維數(shù)組的首地址(例如a[0]),所以可以直接將數(shù)組名賦予指針變量(例如p=a),無需加取地址符&;也可以讓指針變量指向第一個元素的地址(例如p=&a[0]);即p=a與p=&a[0]是等價的
先有c語言數(shù)組,當(dāng)一個指針變量被初始化成數(shù)組名時,就說該指針變量指向了數(shù)組。
ptr被置為數(shù)組str的第一個元素的地址,因為數(shù)組名就是該數(shù)組的首地址,也是數(shù)組第一個元素的地址。此時可以認(rèn)為指針ptr就是數(shù)組str(反之不成立),這樣原來對數(shù)組的處理都可以用指針來實現(xiàn)。
數(shù)組指針是指向這個數(shù)組首地址的指針,指向?qū)ο笫沁@個數(shù)組;指針數(shù)組是存放一類指針的數(shù)組,這個數(shù)組的每個元素都是一個指針;