C語言 對於指標陣列與多重指標的理解

2021-10-04 19:12:02 字數 1954 閱讀 3501

人之所以痛苦,那是因為你在成長。--------magic_guo

1.指標陣列

陣列是存放一批同型別資料的容器,其中的元素可以是整型、浮點型、字元,也可以是指標型等,存放記憶體位址的陣列叫做指標陣列,就像返回指標型別的函式一樣(被稱為指標函式)。

定義指標陣列的方式:

型別名 * 陣列名 [陣列長度]

例如:int * num[4]

這個定義的理解:根據運算子先後等級,括號優先順序高,num先於中括號結合,表示陣列,然後與前面的int * 結合,表示此陣列存放的是指向整型資料的指標,4表示此指標陣列的長度為4。

指標陣列的應用:

# include

# include

//使用指標陣列將若干字串按順序輸出

intmain

(void);

int n =5;

sort

(name, n)

;print

(name, n)

;return0;

}void

sort

(char

* name,

int n)

//定義sort函式,使用選擇排序

if(k!=i)}}

void

print

(char

* name,

int n)

}

結果:

這兩個函式都使用了指標陣列作為引數,當把name作為實參傳進函式,這時候name指向的是指標陣列的第0號元素,但是第0號元素也是乙個char型別的指標變數,在sort函式中,因此要將temp定義為指標型別;在print函式中,使用%s可直接將字串輸出。

這裡最難理解的是選擇排序,選擇排序的思路方法都是一樣的,在全域性範圍內找出最小的,然後找出第二小的,以此類推;可能有時候寫**的方式不同,但是萬變不離其宗。

strcmp(str1, str2)此函式是字串函式庫中的函式,使用於字串的比較。

比較規則:在英文本典中,位置在後面的為「大」。另外,小寫字母在大寫字母的後面,所以比如說小寫的「0」,stolen和大寫的「o」,stolen,相比較;

strcmp(stolen, stolen) >0;

此函式只能用來比較字串,不能比較的單個字元。

2.多重指標

多重指標即:指向指標的指標;可以分為更多的等級;

和上面所說的指標陣列一樣,name陣列存放了各個元素的位址,而且陣列名又是陣列元素的首位址,name指向類首元素的位址,則首元素也是指標型別,因此name則是指標的指標;

定義指標資料的指標變數:

例如:int ** p;

理解:*運算子的結合是從右到左的,p相當於 * ( * p),*p是指標變數,則p則是指標的指標。

例題1:

# include

// 使用指標資料的指標變數

intmain

(void);

char

**p;

int i;

for(i=

0; i<

5; i++

)return0;

}

# include

intmain

(void);

int* num=

;int

**p, i;

p = num;

for(i=

0; i<

5; i++

)return0;

}

指標與陣列的結合形很強,一般要對陣列進行操作,避免不了要是用指標;在概念上指標陣列與多重指標是一樣的,只要理解了指標陣列,則多重指標也易如反掌,雖然關於指標的知識比較繞,但是我們要看清指標的真面目!

加油!

C語言指標陣列與陣列指標

初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...

C語言指標 指標與陣列

1 指標與一維陣列 2 指標與二維陣列 3 指標陣列與陣列指標 指標裡面最難的一種就是指標與陣列了,對於指標和二維陣列來說這裡面的關係比較複雜。牽涉到編譯器的原理和編譯過程。1 指標與一維陣列 指標是指向乙個記憶體的位址,一維陣列的陣列名代表一塊記憶體 這個陣列 的首位址,和陣列首元素的位址一樣,但...

C語言指標 指標與陣列

一 指標的運算 指標可以進行三種運算 1.指標加上整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提是a i j 存在!2.指標減去整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提 a i j 存在!3.兩個指標相加減 兩指標必須指向同一變數!否則運算沒有意義的...