2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言高级编程:二维数组 指针的指针 数组指针 指针数组

C语言高级编程:二维数组 指针的指针 数组指针 指针数组

时间:2021-07-18 09:42:47

相关推荐

C语言高级编程:二维数组 指针的指针 数组指针 指针数组

1. 定义

int **p; 指针的指针

int (*p2)[5]; 数组指针,指向一个数组

int *array[5]; 指针数组,是一个int *类型数组

int array2[3][5]; 二维数组,数组的数组

2. 说明

1)作为形参时,二维数组会被转换为数组指针,int a[][5] ==int (*a)[5]

2)作为形参时,指针数组会被转换为指针的指针,int *p[5] ==int **p

3)指针数组变量可以赋值给指针的指针变量,p = array;

4)二维数组变量可以赋值给数组指针变量,p2 = array2;

5)指针的指针与数组的数组(二维数组)不可互换,在形参中不相等,也不能进行赋值。

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; 会产生warning,二维数组不能直接赋值给指针的指针变量。

int **p;int array2[3][5];int *p2;int i;p = array2;p2 = array2[0];i = array2[0][1];

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。