跨函数使用动态内存

    xiaoxiao2023-09-24  158

    跨函数使用动态内存很重要。所谓跨函数使用动态内存就是☞“如何在主调函数中使用被调函数中的动态内存”。我们为什么要讲指针?第一个目的就是为了讲“动态内存分配”。第二个目的就是为了讲“跨函数使用动态内存”。这个是属于比较深的内容了。

    #include<stdio.h> #include<stdlib.h> void DynamicArray(int **p); int main(void) { int *p = NULL; DynamicArray(&p); printf("*p = %d\n", *p); return 0; } void DynamicArray(int **p) { *p = malloc(sizeof(*p)); **p = 5; return; }

    说明1 “int *p”,表示定义一个 int * 类型的指针变量 p,他只能指向 int 型变量,里面只能存放 int 型变量的地址,但此时他里面还没有内容,也就是说还没有初始化。那么 p 是什么时候初始化的呢?当调用完DynamicArray()函数之后,DynamicArray()函数构建了一个动态的内存空间,且 p 指向了这个空间,此时 p 才被初始化。

    2 p虽然是指针变量,但是指针变量也是变量,只要是变量,在初中执行系统就会为其分配内存单元,所以 p 也有自己的地址,系统为 p 分配内存单元是自动的,而给 p 初始化却是程序员的事情,所以不要把 “p的地址”和“p里面存放的别的变量的地址”给弄糊涂了

    3函数调用时为什么传递 &p 而不是 p?这个问题一定要弄清楚。我

    最新回复(0)