【发布时间】:2017-06-22 16:40:55
【问题描述】:
每次遇到处理c字符串的情况,我都很迷茫。
为什么这两个打印有相同的结果? 据我了解,第一个函数在文本变量中分配字符串的地址。这对我来说似乎很合适。但是第二个函数分配了文本变量指向的地址。这里发生了什么?
#include <iostream>
#include <cstring>
void getText(char** text) {
*text = strdup("AAAAA");
}
void getText2(char* text) {
text = strdup("AAAAA");
}
int main()
{
char* text;
getText(&text);
std::cout << text << std::endl; // prints "AAAAA"
getText2(text);
std::cout << text << std::endl; // prints "AAAAA"
}
【问题讨论】:
-
这不是C..这个混淆应该先清除。
-
不要在c++中使用c-strings,你永远不会有问题。
-
第二个函数不会从
main修改char* text -
把getText2里的文字改成“BBBBB”就可以看到这个了。
标签: c++ string function declaration