为什么malloc一段内存保存到二级指针
时间: 2023-03-01 22:14:45 浏览: 103
使用malloc申请内存保存到二级指针的原因是,二级指针可以让我们在动态分配内存的同时修改指向的地址,从而达到在程序运行过程中动态分配内存的目的。
例如,在使用一维数组时,我们可以在编译时确定数组的大小,但如果我们需要在程序运行过程中根据需要动态分配内存,就需要使用二级指针了。
例如:
```
int **array;
int n, m;
scanf("%d%d", &n, &m);
array = (int **)malloc(n * sizeof(int *));
for (int i = 0; i < n; i++) {
array[i] = (int *)malloc(m * sizeof(int));
}
```
这段代码实现了一个二维数组的动态分配,我们可以在程序运行过程中根据需要动态调整数组的大小。
相关问题
malloc和二级指针
malloc是C语言中的一个函数,用于动态分配内存空间。它可以根据需要分配指定字节大小的内存,并返回一个指向这段内存的指针。通过malloc函数分配的内存在程序执行完后需要手动释放,否则会造成内存泄漏。
二级指针是指指向指针的指针。可以使用二级指针来操作多级指针和动态内存分配。通过二级指针,我们可以在函数内部对指针进行修改,使得指针的修改在函数外部仍然有效。
在引用的示例中,通过函数返回值的形式来传递动态内存。通过在函数内部使用malloc函数分配内存,并在函数结束前返回分配的内存的指针,从而在主函数中使用该指针来访问分配的内存。
而在引用的示例中,通过传递指向指针的指针作为函数参数,在函数内部使用malloc函数分配内存,并将分配的内存的指针赋给指向指针的指针。这样可以在函数外部修改指针的值,使指针指向新分配的内存。
c语言二级指针分配内存方法
对于这个问题,我可以给出以下的回答:二级指针是指一个指针变量的指针,也就是说这个指针变量存储的是一个指向指针的指针变量的地址。在C语言中,可以使用malloc函数来动态分配存储空间,而对于二级指针,则需要给二级指针本身分配一段存储空间,再通过指向指针的指针变量来间接访问这块空间。可以使用类似下面的方式来实现:
```c
int **p;
p = (int **)malloc(sizeof(int *));
*p = (int *)malloc(sizeof(int));
**p = 10;
printf("%d\n", **p);
free(*p);
free(p);
```
这段代码中,首先使用malloc函数分配了一个指针变量p的存储空间,然后再分配一块int类型的存储空间,并将这个存储空间的地址赋值给p所指向的指针变量的地址。最后,通过二级指针p来访问这块存储空间,完成了内存的动态分配和释放。
阅读全文