C语言高级编程:二维数组、指针的指针、数组指针、指针数组
生活随笔
收集整理的這篇文章主要介紹了
C语言高级编程:二维数组、指针的指针、数组指针、指针数组
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 定義
-
int **p;? 指針的指針
-
int (*p2)[5];? 數(shù)組指針,指向一個(gè)數(shù)組
-
int *array[5];? 指針數(shù)組,是一個(gè)int *類型數(shù)組
-
int array2[3][5];? 二維數(shù)組,數(shù)組的數(shù)組
?
2. 說明
1)作為形參時(shí),二維數(shù)組會(huì)被轉(zhuǎn)換為數(shù)組指針,int a[][5] ==?int (*a)[5]
2)作為形參時(shí),指針數(shù)組會(huì)被轉(zhuǎn)換為指針的指針,int *p[5] ==?int **p
3)指針數(shù)組變量可以賦值給指針的指針變量,p = array;
4)二維數(shù)組變量可以賦值給數(shù)組指針變量,p2 = array2;
5)指針的指針與數(shù)組的數(shù)組(二維數(shù)組)不可互換,在形參中不相等,也不能進(jìn)行賦值。
?
?
3. 代碼:
#include <stdio.h>int fun1(int **p) // = int *p[5] {return 0; }int fun2(int a[][5]) // = int (*a)[5] {return 0; }int main() { int **p;int (*p2)[5];int *array[5];int array2[3][5];p = array;p = &(array[1]);p2 = &(array2[1]);p2 = array2;fun1(p);fun1(array);fun1(&(array[0]));fun2(p2);fun2(array2);fun2(&(array2[0])); }?
編譯:
無error,無warning
?
注:以下p = array2; 會(huì)產(chǎn)生warning,二維數(shù)組不能直接賦值給指針的指針變量。?
int **p;int array2[3][5];int *p2;int i;p = array2;p2 = array2[0];i = array2[0][1];?
?
?
總結(jié)
以上是生活随笔為你收集整理的C语言高级编程:二维数组、指针的指针、数组指针、指针数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: etcd参数详解
- 下一篇: webpack之polyfill踩坑之路