在函数内初始化无符号字符指针将返回空指针
Initializing unsigned char pointer inside function returns null pointer
这是我的测试代码
#include <QCoreApplication>
#include <QDebug>
void fillData(unsigned char *data){
data = new unsigned char[10];
for (int i = 0; i < 10; i++){
data[i] = static_cast<unsigned char>(i);
}
qDebug() << "Returning wiht non null data?" << (data == nullptr);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
unsigned char *data = nullptr;
qDebug() << "Is data null" << (data == nullptr);
fillData(data);
qDebug() << "Is data null" << (data == nullptr);
return a.exec();
}
我需要填充一个指向函数内字节数组的指针,并且我在我的应用程序中注意到我一直得到 null。所以我写了这个MWE。它重现了该问题,因为该程序的输出是
Is data null true
Returning wiht non null data? false
Is data null true
当我期望他们的问题返回错误时。我不知道我做错了什么。
该函数处理原始变量的副本。函数参数是其局部变量。
您必须通过引用传递C++含义或 C 含义的指针。例如
C++通过引用传递
void fillData(unsigned char * &data){
data = new unsigned char[10];
for (int i = 0; i < 10; i++){
data[i] = static_cast<unsigned char>(i);
}
qDebug() << "Returning wiht non null data?" << (data == nullptr);
}
C 通过引用传递
void fillData(unsigned char **data){
*data = new unsigned char[10];
for (int i = 0; i < 10; i++){
( *data )[i] = static_cast<unsigned char>(i);
}
qDebug() << "Returning wiht non null data?" << (*data == nullptr);
}
在这种情况下,函数调用将如下所示
fillData( &data );
相关文章:
- 在 const 函数中通过引用和指针返回之间的区别
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 为什么要为指针返回类型返回一系列字符?
- Visual C 运行时:Malloc将指针返回到已经使用的内存(包含实际字符串)
- 将原始指针返回到智能指针
- 从函数中的指针返回对象,例如链接列表
- 将指针返回使用New创建的数组数组
- 查找并将指针返回向量中的对象
- 函数可以将指针返回其自己的类型
- 指针返回值的地址
- 为什么静态指针返回函数中有一个"静态"键?
- 从弱指针返回类型返回共享指针
- 如何将C++引用和指针返回转换为 C++/CLR
- 从指针返回对象时出现意外的析构函数调用
- 阵列指针返回垃圾
- (C )当在同一类中调用时,污点指针返回正确的值,而从MAIN调用时为0
- C 从指针返回到成员功能
- 在构造函数以外的任何其他位置访问相机时,我的相机指针返回 null
- 从取消引用的指针返回原始指针
- 指针返回