C语言给二级指针分配内存空间
时间: 2023-07-20 20:15:21 浏览: 180
在 C 语言中,可以使用 `malloc` 函数为二级指针分配内存空间,具体步骤如下:
1. 定义一个指向二级指针的指针,例如 `char **pp`。
2. 使用 `malloc` 函数为指针 `pp` 分配内存空间,空间的大小应该足够存放一个指向指针的指针,即 `sizeof(char*)`。
3. 使用 `malloc` 函数为指针 `*pp` 分配内存空间,空间的大小应该足够存放需要存储的数据。
4. 对指针 `*pp` 进行赋值操作,即将需要存储的数据保存到指针 `*pp` 指向的内存空间中。
示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char **pp = NULL;
int rows = 2, cols = 4;
int i, j;
// 为二级指针分配内存空间
pp = (char**)malloc(rows * sizeof(char*));
if (pp == NULL) {
printf("Failed to allocate memory for pp!\n");
exit(1);
}
// 为每个指针分配内存空间
for (i = 0; i < rows; i++) {
pp[i] = (char*)malloc(cols * sizeof(char));
if (pp[i] == NULL) {
printf("Failed to allocate memory for pp[%d]!\n", i);
exit(1);
}
}
// 对每个指针进行赋值操作
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
pp[i][j] = 'A' + i * cols + j;
}
}
// 输出每个指针指向的数据
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%c ", pp[i][j]);
}
printf("\n");
}
// 释放内存空间
for (i = 0; i < rows; i++) {
free(pp[i]);
}
free(pp);
return 0;
}
```
在上述示例代码中,我们首先定义了一个指向二级指针的指针 `pp`,然后使用 `malloc` 函数为指针 `pp` 分配了两个指针的内存空间,即 `char*` 类型的指针。接着,使用 `for` 循环为每个指针分配了长度为 `cols` 的内存空间,并对每个指针进行赋值操作。最后,使用 `for` 循环输出了每个指针指向的数据,并在程序结束之前释放了所有分配的内存空间。
阅读全文