文章目录
- 前言
- 一、案例
前言
在一些情况下,我们需要在函数内部动态地分配内存来存储结构体,并且需要在函数外部访问该结构体。在这种情况下,可以使用二级指针作为函数参数来实现动态内存分配,并且在函数外部使用指针访问结构体。
一、案例
#include <stdio.h>
#include <stdlib.h>
void allocateMemory(int **ptr) {
// 分配内存,并修改外部函数指针的指向,如果你不信, 你可以用一级指针作为参数加进来,就不会修改外部指针的地址
*ptr = (int *)malloc(sizeof(int));
if (*ptr == NULL) {
printf("Memory allocation failed\n");
exit(1);
}
// 将值赋给分配的内存
**ptr = 10;
}
int main() {
int *ptr = NULL;
printf("Before calling allocateMemory: ptr = %p\n", (void *)ptr);
// 调用函数动态分配内存
allocateMemory(&ptr);
printf("After calling allocateMemory: ptr = %p, *ptr = %d\n", (void *)ptr, *ptr);
// 释放内存
free(ptr);
return 0;
}
结果