文章目录
- 前言
- 一、案例
前言
在一些情况下,我们需要在函数内部动态地分配内存来存储结构体,并且需要在函数外部访问该结构体。在这种情况下,可以使用二级指针作为函数参数来实现动态内存分配,并且在函数外部使用指针访问结构体。
一、案例
#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;
}
结果