目錄
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.簡介
1.數組
數組中的每個元素都有一個序號,這個序號從 0
開始,稱為下標index
,例如,a[0]
表示第 1
個元素,a[3]
表示第 4
個元素。數組是一個整體,它的內存是連續的,內存示意圖:
2.指針
指針很靈活,它可以指向任意類型的數據。指針的類型說明了它所指向地址空間的內存,以下是有效的指針聲明:
int *p; /* 一個整型的指針 */
double *p; /* 一個 double 型的指針 */
float *p; /* 一個浮點型的指針 */
char *p; /* 一個字符型的指針 */
注意:不要忘記在指針類型和變量名中間還有一個 * 號,沒有這個 * 號,只是定義了一個普通變量,這也是普通變量聲明和指針聲明的區別之一;
3.指針和數組區別
指針和數組區別這里不再繼續啰嗦,可以直接參考文章:指針和數組區別
二.指針數組和數組指針區別
可能不少小伙伴很懵逼,又是指針數組又是數組指針的,指針數組和數組指針區別?? 傻分不清??
1.指針數組
指針數組:它實際上是一個數組,數組的每個元素存放的是一個指針類型的元素。
int* arr[5];
//優先級問題:[]的優先級比*高
//說明arr是一個數組,而int*是數組里面的內容
//這句話的意思就是:arr是一個含有5個int*的數組
int* arr[5]
表示由 5
個一維數組構成,也可以理解為是一個二維數組,如下圖:
示例代碼如下:
char a[3][8]={"gain","much","strong"}; //二維數組,由三個一維數組夠成
char *n[3]={"gain","much","strong"}; //指針數組,由三個一維數組夠成
2.數組指針
數組指針:它實際上是一個指針,該指針指向一個數組。
int (*arr)[5];
//由於[]的優先級比*高,因此在寫數組指針的時候必須將*arr用括號括起來
//arr先和*結合,說明arr是一個指針變量
//這句話的意思就是:指針arr指向一個大小為5個整型的數組。
int(*arr)[5]
表示指針 arr
指向一個大小為 5
個整型的數組,如下圖:
示例代碼如下:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 指針數組和數組指針區別
//@Time:2021/06/19 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/
int a[4][5];
int (*p)[5]=a;//指針p指向一個大小為5個整型的數組
*(p+i)是一維數組a[i][0]的地址;
(p+2)+3表示a[2][3]地址(第一行為0行,第一列為0列);
*(*(p+2)+3)表示a[2][3]的值;
三.猜你喜歡
- 安裝 Visual Studio
- 安裝 Visual Studio 插件 Visual Assist
- Visual Studio 2008 卸載
- Visual Studio 2003/2015 卸載
- C 語言邏輯運算符
- C 語言三目運算符
- C 語言逗號表達式
- C 語言 sizeof 和 strlen 函數區別
- C 語言 strcpy 和 strcpy_s 函數區別
- C 語言 memcpy 和 memcpy_s 區別
- C 語言 數組定義和使用
- C 語言 數組遍歷
- C 語言 數組下標越界
- C 語言 數組內存溢出
- C 語言 數組下標越界和內存溢出區別
- C 語言 二維數組定義和使用
- C 語言 二維數組行數和列數計算
- C 語言 指針聲明和定義
- C 語言 指針 p++ / p–
- C 語言 p++/§++/_(p++)/_p++
- C 語言 使用指針遍歷數組
- C 語言 指針和數組區別
- C 語言 數組指針
- C 語言 指針數組
- C 語言 指針數組和數組指針區別
未經允許不得轉載:猿說編程 » C 語言 指針數組和數組指針區別
本文由博客 - 猿說編程 猿說編程 發布!