一、數(shù)組和指針的介紹
指針是一個(gè)變量,它存儲(chǔ)了一個(gè)內(nèi)存地址,該地址指向一個(gè)變量的存儲(chǔ)位置。通過(guò)指針,可以訪問(wèn)和修改指向的變量。數(shù)組是一個(gè)由相同數(shù)據(jù)類(lèi)型元素組成的集合,可以通過(guò)索引來(lái)訪問(wèn)和修改這些元素。
二、兩者之間的區(qū)別
1,存儲(chǔ)方式
數(shù)組:數(shù)組在內(nèi)存中是連續(xù)存放的,開(kāi)辟一塊連續(xù)的內(nèi)存空間。數(shù)組是根據(jù)數(shù)組的下進(jìn)行訪問(wèn)的,數(shù)組的存儲(chǔ)空間,不是在靜態(tài)區(qū)就是在棧上。
指針:指針很靈活,它可以指向任意類(lèi)型的數(shù)據(jù)。
指針p存儲(chǔ)的是一個(gè)內(nèi)存地址,這個(gè)地址指向的是某種類(lèi)型變量的存儲(chǔ)空間。如果要訪問(wèn)這個(gè)變量,需要使用指針運(yùn)算符(*)來(lái)解引用指針,將指針?biāo)赶虻牡刂忿D(zhuǎn)換為所指向的變量的值。指針的值也可以改變,通過(guò)指針運(yùn)算符(&)獲取變量的地址,然后將其賦給指針變量。
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //
int a = 10;
int* p = &arr[0]; // 數(shù)組下標(biāo)訪問(wèn)第一個(gè)元素,取地址后是第一個(gè)元素的地址
//int* p = arr; // 跟上面這行是等價(jià)的,數(shù)組名表示這個(gè)數(shù)組第一個(gè)數(shù)據(jù)的指針,此時(shí)數(shù)組和指針是“通用的”
p = &a; // 指向a變量的地址,此時(shí) *p取到的值就是a變量的值
2,賦值方式
同類(lèi)型指針變量可以相互賦值,數(shù)組不行,只能一個(gè)一個(gè)元素的賦值或拷貝
3,占用空間大小
數(shù)組的大小取決于數(shù)組元素的類(lèi)型和元素個(gè)數(shù)
數(shù)組所占存儲(chǔ)空間的內(nèi)存:sizeof(數(shù)組名)
數(shù)組的大小:sizeof(數(shù)組名)/sizeof(數(shù)據(jù)類(lèi)型)
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 占40個(gè)字節(jié)
int* p = arr; // 占4個(gè)字節(jié)(32位系統(tǒng))
char c = 'A';
char* p2 = &c; // 占4個(gè)字節(jié)(32位系統(tǒng))
指針無(wú)論是什么類(lèi)型,在32位平臺(tái)是占4 byte,在64位平臺(tái)是占8 byte
4, 可變性
數(shù)組的大小在定義時(shí)就已經(jīng)確定,無(wú)法改變,而指針可以隨時(shí)指向不同的變量,從而實(shí)現(xiàn)動(dòng)態(tài)變化。
三、數(shù)組指針和指針數(shù)組的區(qū)別
指針數(shù)組 :首先是一個(gè)數(shù)組,只不過(guò)數(shù)組的每個(gè)成員是一個(gè)指針變量。
數(shù)組指針 :首先是一個(gè)指針,這個(gè)指針指向一個(gè)數(shù)組。
代碼:
int *p1[10]; // 指針數(shù)組,[]的優(yōu)先級(jí)大于*,p1是一個(gè)數(shù)組,數(shù)組的值是一個(gè)指針
int (*p2)[10]; // 數(shù)組指針
對(duì)于指針數(shù)組,p1先和“[]”結(jié)合,構(gòu)成一個(gè)數(shù)組的定義,數(shù)組名為p1,int *修飾的是數(shù)組的內(nèi)容,即數(shù)組的每個(gè)元素。那么它本質(zhì)是一個(gè)數(shù)組,這個(gè)數(shù)組里有10個(gè)指向int類(lèi)型數(shù)據(jù)的指針。
對(duì)于數(shù)組指針,“()”的優(yōu)先級(jí)比“[]”高,“*”和p2 構(gòu)成一個(gè)指針的定義,指針變量名為p2,int 修飾的是數(shù)組的內(nèi)容,即數(shù)組的每個(gè)元素。數(shù)組在這里并沒(méi)有名字,是個(gè)匿名數(shù)組。那么它本質(zhì)是一個(gè)指針,它指向一個(gè)包含10個(gè)int 類(lèi)型數(shù)據(jù)的數(shù)組。
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7648瀏覽量
167277 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141560
發(fā)布評(píng)論請(qǐng)先 登錄
C語(yǔ)言數(shù)組和指針的區(qū)別

C語(yǔ)言中指針數(shù)組和數(shù)組指針的區(qū)別
C語(yǔ)言——指針、數(shù)組和函數(shù)
C51語(yǔ)言的指針、結(jié)構(gòu)、聯(lián)合和枚舉
C語(yǔ)言入門(mén)教程-用指針操作數(shù)組
c語(yǔ)言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別
指針和數(shù)組都是C語(yǔ)言的精髓所在 兩者有何聯(lián)系區(qū)別

評(píng)論