跨函数使用动态内存很重要。所谓跨函数使用动态内存就是☞“如何在主调函数中使用被调函数中的动态内存”。我们为什么要讲指针?第一个目的就是为了讲“动态内存分配”。第二个目的就是为了讲“跨函数使用动态内存”。这个是属于比较深的内容了。
#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 初始化却是程序员的事情,所以不要把 “