0
点赞
收藏
分享

微信扫一扫

15.3指针做函数的返回值(有待修改)

想溜了的蜗牛 2022-01-20 阅读 46
c语言c++

指针做函数的返回值
// 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;  //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;
}
举报

相关推荐

0 条评论