gpt4 book ai didi

c++ - 将自定义数组传递给函数的问题 (c++)

转载 作者:行者123 更新时间:2023-11-28 01:05:48 29 4
gpt4 key购买 nike

我有一个类型为 T 的数组,我将其作为指针参数传递给函数。问题是我无法正确地将新数据写入此数组,第二次尝试时不会出现内存冲突。

在这段代码中,我从文本文件中读取整数并将它们传递给函数(T 类型模板类的一部分),以便将它们附加到数组中。

完成附加整数后,我想在 Main 中使用相同的数组。

有人知道代码有什么问题吗?

谢谢,麦克斯

template<class T> int CFile<T>::read(T **apBuf, int aNum)
{
int readCounter = 0;

*apBuf = (T*)malloc(sizeof(T)*aNum);


for (int i = 0; i<aNum; i++)
{
T var = read();

if (var == NULL)
{
if (isEof)
{

return readCounter;
}
else
{
perror ("Error Reading File - Insufficient var type");
return -1;
}
}
else
{
*apBuf[i] = var;

readCounter++;
}
}



return readCounter;

}

最佳答案

*apBuf[i] = var;

这被解析为好像是这样写的:

*(apBuf[i]) = var;

这显然不是你想要的; apBuf是指向数组指针的指针;您将其视为指向数组的指针并且正在取消引用 i它的元素。你真正的意思是:

(*apBuf)[i] = var;

*apBuf为您提供“apBuf 指向的对象”,这是数组;然后你得到i数组的第 th 个元素。

也就是说,这很不寻常:为什么不将数据累积到 std::vector<T> 中呢?并从函数中返回它?那么您就不必担心显式动态内存管理。 (另外,T 总是指针类型吗?如果不是,那么 var == NULL 就没有意义。)

关于c++ - 将自定义数组传递给函数的问题 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232066/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com