从char*访问数组元素
Accessing array elements from char*
我是c++的新手,我仍然在努力解决指针的问题。
假设我有一个函数,它返回一个char*,指向一个字符数组/字符串的开头。
char* read() {
char data[] = "this for example";
return *data;
}
之后我想访问这些数据,但是我不认为我可以这样做:
char* data = read();
if(data[3] == 's')
return true;
在本例中使用read()
返回的数据的正确方法是什么?
在这种情况下,最好使用标准类std::string
std::string read()
{
char data[] = "this for example";
return data;
}
//...
std::string data = read();
if( data[3] == s )
return true;
至于你的代码片段,如果重写它没有错误,它会有未定义的行为,因为你返回一个指针到一个局部数组,将在退出函数后销毁。
在您的read()
函数中,return *data;
返回char
而不是 char*
。另外,在函数返回后不应该访问堆栈内存。让它静态。应该是:
char* read()
{
static char data[] = "this for example";
return data;
}
不能返回指向自动变量的指针。它调用未定义行为。动态分配data
。
char *data = new char[20];
使用
时,不要忘记删除分配的内存。delete[] data;
最好使用std::vector
或std::string
。
相关文章:
- 如何访问宏中定义的数组元素
- 使用指针访问数组元素时出现意外结果
- CUDA C/C 访问先前的数组元素
- 访问边界外的数组元素会损坏它
- C++ 如何使用类方法正确访问动态数组元素
- 通过指针访问数组元素
- 提高访问大型数组元素的性能
- 在C 中,可以用语法[i,j,..]实现访问数组元素的功能,而语法就像numpy中的ndarray样式一样
- 如何在C 中的2D动态数组中访问1个元素
- 从C++中的指针访问数组元素
- 访问数组元素的不同方式
- 如何访问指针的数组元素
- 使用C++中的指针访问多维数组元素
- 从私有数组类C++访问类对象元素
- 设置数组元素时MSVC访问冲突
- 使用多态基类(包含虚函数)访问数组元素时的类型
- 如何使用指针访问第N-d数组元素
- 在 c++ 中使用数组参数访问单个元素的字符
- 通过名称访问数组元素
- 从char*访问数组元素