在学Java数组的时候发现和C语言的有挺大的区别尤其是在指针方面 所以就想记录一下自己的一些想法
#include#include void Create(int* *arr); void Swap(int* *arr); void Print(int* *arr); void Delete(int* *arr); int main(void) { // 对于指针表达式的阅读规则:从右到左 由近到远 括号优先 // 所以这里是创建了一个用来指向整型指针的指针变量 int* *arr = (int**)malloc(sizeof(int*) * 2); Create(arr); Print(arr); Swap(arr); Print(arr); Delete(arr); return 0; } // 给arr指针(指针数组)的每一个元素(指针)分配空间 void Create(int* *arr) { for(int i = 0; i < 2; i++) { arr[i] = (int*)malloc(sizeof(int) * 3); } printf("二维数组初始化完毕..n"); } // 给每一个元素赋值 void Swap(int* *arr) { for(int i = 0; i < 2; i++) { for(int j = 0; j < 3; j++) { printf("请输入第[%d][%d]个数据n", i, j); scanf("%d", &arr[i][j]); } } printf("数据输入完毕..n"); } // 打印元素 void Print(int* *arr){ for(int i = 0; i < 2; i++) { for(int j = 0; j < 3; j++) { printf("%d ",arr[i][j]); } printf("n"); } } // 释放空间 void Delete(int* *arr) { for(int i = 0; i < 2; i++) { free(arr[i]); // 释放每个手动创建的一维数组指针 } free(arr); // 释放手动创建的二维数组指针 printf("程序结束 释放空间..n"); }
结果如下:



