【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                數組指針與指針數是非常重要的概念。面試中也是經常會被問到的
文章目錄
- 1 數組的類型
- 1.1 定義數組的類型
 
- 2 數組指針
- 2.1 數組類型和數組指針的代碼分析
 
- 3 指針數組
- 3.1 指針數組代碼案例分析
 
- 4 總結
 
1 數組的類型
C語言中的數組有自己特定的類型。比如 int a[5];
數組a的類型是 int[5],并不是 int類型。
- 數組類型是由元素類型和數組大小共同決定的
1.1 定義數組的類型
在C語言中可以通過typedef 為數組的類型重命名。如下:
- 數組的類型:
- 數組的定義:
這種寫法可能有的人沒見過,等看過后面的數組指針與指針數的定義的時候就知道了。
2 數組指針
- 數組指針是一個指針,不是數組。這個指針指向一個數組。該指針需要使用取地址符 & 向數組取地址。(數組的整個地址而非數組元素首地址)
- 可以通過數組類型來定義數組指針:ArrayType* pointer;
- 也可以直接定義:type(*pointer)[n];
注意:上面的pointer為數組指針變量,ArrayType是數組的類型,type是數組里面元素的類型。注意區分三者的不同。
2.1 數組類型和數組指針的代碼分析
分析下面的代碼32-1.c:
#include <stdio.h>/* 定義數組類型 */ typedef int(AINT5)[5]; typedef float(AFLOAT10)[10]; typedef char(ACHAR9)[9];int main(){AINT5 a1; //int a1[5];float fArray[10];AFLOAT10* pf = &fArray; //注意與float* pf = &fArray 區分ACHAR9 cArray;char(*pc)[9] = &cArray;int i = 0;printf("%d, %d\n", sizeof(AINT5), sizeof(a1));for(i=0; i<10; i++){(*pf)[i] = i; //注意數組指針的用法}for(i=0; i<10; i++){printf("%f\n", fArray[i]);}printf("%p, %p\n", &cArray, pc+1); //pc是整個數組的指針,pc+1 ==》&cArray + 9return 0; }- 編譯運行上述代碼:
 
分析:
- 注意學習上面定義數組類型的方法,并使用定義的數組類型來定義數組。
- 注意數組指針的聲明與使用方法
- 數組指針是整個數組的地址,需要使用& 號來獲取
- 代碼比較簡單,不多做分析
3 指針數組
- 指針數組是一個數組,不是指針。該數組存的元素是指針。
- 指針數組的定義: type* pArray[n];
其中 type* 是數組中存的元素的類型pArray 是數組名。如下圖的指針數組:
3.1 指針數組代碼案例分析
- 代碼32-2.c
- 編譯運行結果為:
4
 -1
分析:
- lookup_keyword這個函數是查找字符串數組中是否存在某一個字符串
- table數組,就是一個指針數組,里面存的是指針。(字符串是一種常量指針)
- 注意學會使用指針數組的使用。
4 總結
- 數組也是有類型的:由數組的大小和元素的類型共同決定的
- 數組指針是一個指針,該指針指向對應類型的數組
- 指針數組是一個數組,該數組中存的元素是對應類型的指針
- 指針數組的使用與數組是一樣的。但是注意指針數組在使用的時候是如何表示的。
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 备考2022年软考论文写作注意要点
- 下一篇: C++标准库与Java基础类对照表
