数组

来源:互联网 发布:js实现格式化html代码 编辑:程序博客网 时间:2024/04/30 07:39

C语言中的数组是一种将标量聚集成更大数据类型的方式。



#include <stdio.h>#include <stdlib.h>#include <string.h>void PrintArray(int arr[], int n){printf("array:\n");for (int i = 0; i < n; i++) {// printf("%d\t", arr[i]);printf("%d\t", *(arr + i));}printf("\n");}// 数组做参数时,传递的是数组首地址的值// 形参在内部退化成局部变量的指针void PrintArgInfo(int arr[], int n){printf("function argument:\n");printf("arr:         0x%x\n", arr);            // int *printf("sizeof(arr): %d\n", sizeof(arr));      // 4}int main(){// 一维数组// *(arr + x) = arr[x];int arr[3] = { 1, 2, 3 };PrintArray(arr, 3); printf("arr:         0x%x\n", arr);            // int *printf("sizeof(arr): %d\n", sizeof(arr));      // 12printf("arr[1]:      %d\n", *(arr + 1));       //  arr[1] = 2PrintArgInfo(arr, 3);getchar();return 0;}

#include <stdio.h>#include <stdlib.h>#include <string.h>// 二维数组作形参时,需要指定数组二维的大小// 1)int arr[][m]; 2)int (*arr)[m]// void Print2Array(int arr[][4], int n)void PrintArray(int(*arr)[4], int n){printf("array:\n");for (int i = 0; i < n; i++) {for (int j = 0; j < 4; j++) {printf("%d\t", arr[i][j]);}printf("\n");}}int main(){// 二维数组,即数组的数组// *(*(arr + x) + y) = arr[x][y];int arr[3][4] = {1, 2, 3, 4,5, 6, 7, 8,1, 2, 3, 4};typedef int col4[4];col4 A[3];PrintArray(arr, 3);printf("&arr:           0x%x\n", &arr);            // int (*)[3][4]printf("sizeof(&arr):   %d\n", sizeof(&arr));      // 4// 数组做参数时,传递的是数组首地址的值printf("arr:            0x%x\n", arr);             // int (*)[4]printf("sizeof(arr):    %d\n", sizeof(arr));       // 48printf("arr[0]:         0x%x\n", arr[0]);          // int *printf("sizeof(arr[0]): %d\n", sizeof(arr[0]));    // 16printf("arr[1][2]:      %d\n", *(*(arr + 1) + 2)); // arr[1][2] = 7getchar();return 0;}

总结
1) 数组名本质上是指向该数组首地址的常量指针
2) 数组做实参时,传递的是数组首地址的值;数组作形参时,在内部退化成局部变量的指针。
3) 多维数组,即数组的嵌套,可以看成是数组的数组
4) 二维数组作形参时,需要指定数组二维的大小。
5) 可以使用指针对数组元素进行操纵,arr[i] = *(arr + i)等价。

1 0
原创粉丝点击