#include<stdio.h>
#include<stdlib.h>
void show_array(int * a, int len);
int * f(void);
int main()
{
int * a;
a = f();
printf("%d", a); //最终输出的pArr与a的值是一样的,输出数组也没变,可是我想,函数结束时,应该是把pArr变量释放了,后面的操作是无法访问pArr所在的内存空间。
// show_array(a, 5); //但是在函数外调用的,是把pArr所存的地址赋值给了另外一个指针变量(相当于只是给出了内容),所以并不矛盾。外部函数仍可以使用其内部定义的数组。
free(a);
return 0;
}
void show_array(int * a, int len)
{
int i;
for (i=0; i<len; i++)
{
printf("%d", *(a+i));
}
}
int * f(void)
{
int i;
int * pArr = (int)malloc(sizeof(int)*5);
for(i=0; i<5; i++)
{
*(pArr+i) = i;
}
printf("%d\n", pArr);
return pArr;
}
在函数内 动态分配内存定义数组
最新推荐文章于 2023-06-08 20:05:46 发布