指针做函数的返回值
// 1不要返回临时变量的地址
// 2可以返回静态变量和全局变量的地址
// 3可以返回动态内存分配的地址
#include<stdio.h>
int* getPtr()
{
//返回动态内存分配的地址(这种方法实际中比较常用)
int* p = calloc(5, sizeof(int));
if (p)
{
for (int i = 0; i < 5; i++)
{
p[i] = i;
}
return p;
}
//返回静态变量和全局变量的地址是可以的
//static int cnt = 0;
//++cnt;
//return &cnt;
//int num = 11;
//return # //num是局部变量,函数执行结束,内存会被释放,返回这个地址是不安全的 warning C4172:
//return NULL;
}
int main()
{
int* pt = getPtr();
//*pt = 20;
//getchar();//等待一下,让内存有足够的时间销毁(让别的变量用这块内存)
if (pt==NULL)
{
printf("pt is NULL\n");
}
else
{
for (int i = 0; i < 5; i++)
{
printf("*pt :%d\n", *(pt+i));
}
}
free(pt);
//printf("%d\n", *getPtr());
return 0;
}