gpt4 book ai didi

c++ - 如何使用引用调用从 C++ 函数中获取 char** 类型变量的值?

转载 作者:行者123 更新时间:2023-11-30 01:04:58 24 4
gpt4 key购买 nike

我正在尝试使用以下代码打印以下内容:

int main() {
char p[] = "hello";
char*t = p;
char**b = &t;
std::string s = b[0];
cout<<"string="<<s<<" b[0]="<<b[0];
}

我得到的输出符合预期:

string=hello b[0]=hello

现在我想使用一个函数调用来实现同样的事情,在这个函数调用中我通过引用传递一个变量:

void func(char**& p) {
char *k = (char*)malloc(8*sizeof(char));
k = (char*)"abc";
p = &k;
}

int main() {
char**j = NULL;
func(j);
std::string s1 = j[0];
cout<<s1;
}

现在我得到一个空字符串。可能是什么原因以及如何解决?

最佳答案

你有(至少)两个问题:

  1. 首先是让 p 指向局部变量 k
  2. 第二个更微妙,您重新分配 k 丢失了您分配的原始内存并使k 指向。<

然后是关于从不使用 char 数组或指向 char 的指针作为字符串的常见高谈阔论,当您有 std::string 时。并且你不应该在 C++ 中使用 malloc,只能使用 newnew[]。如果您需要 new[],请考虑改用 std::vector(当然字符串除外)。

关于c++ - 如何使用引用调用从 C++ 函数中获取 char** 类型变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49150182/

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