美文网首页
[C指针]指针与数组:传递数组

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

作者: AkuRinbu | 来源:发表于2019-04-13 15:53 被阅读0次

学习笔记

《深入理解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]
打印多维数组

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

  • int(*pmatrix)[5] = matrix; 括号不可省略

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

  • matrix + 1
    matrix + 1

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

  • matrix[0] 或者 matrix[1] 是行的指针
    matrix[0] 或者 matrix[1] 是行的指针

8、传递多维数组

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

每行有个元素写清楚
  • 两种等价写法

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

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

  • &matrix[0][0]是一个整数指针
  • matrix则是一个整数数组的指针,即,指向第一行的指针

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

  • 传入参数时,除了第一维以外的,维数全部要标清楚


    三维数组 int arr3d[3][2][4]
  • 什么是 3 2 4 ? : 3行,每行切2个格子,每个格子里再有4个元素


    int arr3d[3][2][4] 示意图

相关文章

网友评论

      本文标题:[C指针]指针与数组:传递数组

      本文链接:https://www.haomeiwen.com/subject/jgfrwqtx.html