c语言二维指针如何动态分配
时间: 2024-11-28 11:12:24 浏览: 6
在C语言中,动态分配二维数组可以分为两步:首先创建一个指向一维数组的指针,然后动态为这个一维数组分配内存。
1. 定义一个二维数组类型的指针:
```c
int **matrix; // 定义一个指向整型数组的一维指针
```
这里`**`表示的是两个级别的指针,即指针到指针。
2. 动态分配内存:
```c
size_t rows = 3;
size_t cols = 4; // 定义矩阵的行数和列数
// 先分配足够的空间给一维指针所指向的元素
matrix = (int **)malloc(rows * sizeof(int *));
for (size_t i = 0; i < rows; ++i) {
matrix[i] = (int *)malloc(cols * sizeof(int)); // 每一行动态分配列数个整数的空间
}
```
注意这里的两次`malloc()`,第一次是为指针数组分配空间,第二次是为每个指针指向的数组分配空间。
3. 使用动态分配的二维数组:
```c
// 现在你可以像操作普通数组一样操作了
matrix[0][0] = 10; // 设置第一个元素
// ...
// 使用完后别忘了释放内存
for (size_t i = 0; i < rows; ++i)
free(matrix[i]);
free(matrix);
```
阅读全文