C++指针用作函数形参的问题

指针用作函数形参时,注意如果指针是在函数内申请内存,务必添加引用符号。这主要是因为在函数外指针是一个空指针,其指向未定。

int ReadData16U(const char *filename, Image16U *&image, int imgSize, HeadInfo &headInfo)
{
	//16位无符号型[0,65535]
	FILE* pFile = fopen(filename, "rb+");
	if (pFile == NULL)
	{
		printf("ERROR: File %s does not exist\n", filename);
		return -1;
	}
	int offset = sizeof(HeadInfo);
	image = new Image16U[imgSize];
	fread(&headInfo, 1, offset, pFile);
	cout << headInfo.height << endl;
	fread(image, imgSize * sizeof(Image16U), 1, pFile);
	fclose(pFile);

	return 1;
}
int test()
{
	int w = 512, h = 512;
	int chnl = 1;
	char *filename = "test.dat";
	Image16U *srcImage = nullptr;
	HeadInfo headInfo;
	ReadData16U(filename, srcImage, w*h, headInfo);
}

反之,如果指针是在函数外申请内存,则不需要引用符号。

int ReadData16U(const char *filename, Image16U *image, int imgSize, HeadInfo &headInfo)
{
	//16位无符号型[0,65535]
	FILE* pFile = fopen(filename, "rb+");
	if (pFile == NULL)
	{
		printf("ERROR: File %s does not exist\n", filename);
		return -1;
	}
	int offset = sizeof(HeadInfo);
	fread(&headInfo, 1, offset, pFile);
	cout << headInfo.height << endl;
	fread(image, imgSize * sizeof(Image16U), 1, pFile);
	fclose(pFile);

	return 1;
}
int test()
{
	int w = 512, h = 512;
	int chnl = 1;
	char *filename = "test.dat";

	Image16U *srcImage = nullptr;
	srcImage = new Image16U[w*h*chnl];

	HeadInfo headInfo;
	ReadData16U(filename, srcImage, w*h, headInfo);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值