正在初始化字符指针
Initializing char pointer
我有一个函数
ValArgument(char* ptr){
char str[] = "hello world";
ptr = &str[0];
}
在这个函数中,我想初始化一个char数组,并将其添加到char指针ptr中。我这样调用函数:
char* ptr= NULL;
ValArgument(ptr);
返回的指针的值仍然为NULL。为什么?我预计指针会指向char数组str[]。
返回的指针的值仍然为NULL。为什么?
因为您按值传递了指针。这意味着函数被赋予了一个单独的指针副本,它对指针所做的任何更改都不会影响调用方的副本。
您可以通过引用传递:
void ValArgument(char *& ptr)
// ^
或返回一个值:
char * ValArgument();
我预计指针会指向char数组str[]。
否;一旦你解决了这个问题,它就会指向当函数返回时被破坏的局部变量的不死外壳。任何使用指针的尝试都会导致未定义的行为。
根据您需要对字符串执行的操作,您可能需要:
- 指向字符串文字
char const * str = "hello world";
的指针。请注意,这应该是const
,因为不能修改字符串文字 - 指向静态数组
static char str[] = "hello world";
的指针。这意味着每个人只共享一个字符串,因此任何修改都会影响到每个人 - 指向动态分配的数组的指针。不要去那里
- 字符串对象
std::string str = "hello world";
。这是最不容易出错的,因为它可以像一个简单的值一样传递
相关文章:
- 指向指向字符数组的指针数组的指针
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将字符缓冲区强制转换为函数指针
- 在函数中返回无符号字符数组,但不返回指针
- 将字符逐个分配给指针?
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将字符数组复制到 QByte 数组中,而无需传递指针
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- C++指针数组到字符数组中的特定位置
- 如何从链表指针字符中查找字符
- 获取字符数组地址,然后转换为指针字符
- 在指针字符 c++ 中分配字符数组的值
- C 指针字符
- 将向量传递<char>到指针字符*
- 如何修复未对齐的指针(字符**)
- 如何打印指针字符数组
- 指针 *字符和 &字符
- C++指针字符
- C/ c++:从指针字符一维数组中访问单个字符