[C指针]指针与数组:传递数组

2019-04-13  本文已影响0人  AkuRinbu

学习笔记

《深入理解C指针》
http://www.ituring.com.cn/book/1147
第4章 指针与数组

5、传递一维数组

传递一维数组

传进去的是 int[] arr 还是 int * arr 都可以,输出的时候写 arr[i] 还是 *(arr+i 也都行

6、存着指针的一维数组

存着指针的一维数组 数组元素是指针

int *arr[5] ; 指针数组,即,存着指针的数组
数组元素是 arr[i] ,这是一个指针
取出这个指针自身所在用 &arr[i]
取出这个指针存的地址用 *arr[i]

7、指针和多维数组

多维数组

int arr3d[3][2][4] = {
    {{1, 2, 3, 4}, {5, 6, 7, 8}},
    {{9, 10, 11, 12}, {13, 14, 15, 16}},
    {{17, 18, 19, 20}, {21, 22, 23, 24}}
};
多维数组的访问

打印多维数组

打印多维数组

多维数组也是数组,元素在内存中也是紧挨着依次排列的;一行一行地排列,int matrix[2][5], 就是说有2行,每行再有5个元素;那么就是先排第一行、再排第二行;

/// 定义一个指向二维数组的指针
/// 该二维数组的元素类型是整数,每行有5个元素
/// 声明的列数,比如5,必须指定,否则结果不可预期

matrix + 1 ,实质上是跨了一行,这里每行有5个元素,一共是20字节

8、传递多维数组

(1) 编译器需要知道 : 每行有几个元素

每行有个元素写清楚

void display2DArray(int arr[][5], int rows) ;
void display2DArray(int (*arr)[5], int rows) ;

(2)&matrix[0][0]matrix

(3)三维数组 int arr3d[3][2][4]

上一篇 下一篇

猜你喜欢

热点阅读