voidinitializeArray(int**arr,int size){for(int i =0; i < size; i++){
arr[i]=(int*)malloc(sizeof(int));*(arr[i])= i *10;}}intmain(){int*arr[5];initializeArray(arr,5);for(int i =0; i <5; i++){printf("%d ",*arr[i]);free(arr[i]);}printf("\n");return0;}
指针数组是一个数组,其每个元素都是一个指针
#include<stdio.h>intmain(){// 定义一个指向int的指针数组int*arr[3];// 定义三个整数int a =10, b =20, c =30;// 将指针数组的每个元素指向不同的整数
arr[0]=&a;
arr[1]=&b;
arr[2]=&c;// 访问并打印指针数组中的值for(int i =0; i <3; i++){printf("%d ",*arr[i]);}printf("\n");return0;}
## 数组指针是一个指向数组的指针
#include<stdio.h>voidprintArray(int(*arr)[3],int size){for(int i =0; i < size; i++){for(int j =0; j <3; j++){printf("%d ", arr[i][j]);}printf("\n");}}intmain(){int array[2][3]={{1,2,3},{4,5,6}};// 将数组指针传递给函数printArray(array,2);return0;}
如果二维数组的行数和列数都是动态的,可以使用二级指针(即指针的指针)进行传递
#include<stdio.h>#include<stdlib.h>// 定义一个打印二维数组的函数,数组行列数为参数传递voidprintFullyDynamicArray(int rows,int cols,int**arr){for(int i =0; i < rows; i++){for(int j =0; j < cols; j++){printf("%d ", arr[i][j]);}printf("\n");}}intmain(){int rows =3;int cols =4;// 动态分配二维数组int**array =(int**)malloc(rows *sizeof(int*));for(int i =0; i < rows; i++){
array[i]=(int*)malloc(cols *sizeof(int));}// 初始化二维数组int value =1;for(int i =0; i < rows; i++){for(int j =0; j < cols; j++){
array[i][j]= value++;}}printFullyDynamicArray(rows, cols, array);// 释放内存for(int i =0; i < rows; i++){free(array[i]);}free(array);return0;}