指向函数参数指针的C++指针 下面的C++代码不按我的意愿工作。< /P> #include <string> #include <iostream> int Pointer_Function(char* _output); int Pointer_to_Pointer_Function(char** text ); int main() { char* input = "This"; printf("1. %s \n", input); Pointer_Function(input); printf("5. %s \n", input); int test; std::cin >> test; } int Pointer_Function(char* _output) { _output = "Datenmanipulation 1"; printf("2. %s \n", _output); Pointer_to_Pointer_Function(&_output); printf("4. %s \n", _output); return 0; } int Pointer_to_Pointer_Function(char** text ) { printf("3. %s \n", *text); char* input = "HalliHallo"; text = &input; printf("3.1. %s \n", *text); return 0; }

指向函数参数指针的C++指针 下面的C++代码不按我的意愿工作。< /P> #include <string> #include <iostream> int Pointer_Function(char* _output); int Pointer_to_Pointer_Function(char** text ); int main() { char* input = "This"; printf("1. %s \n", input); Pointer_Function(input); printf("5. %s \n", input); int test; std::cin >> test; } int Pointer_Function(char* _output) { _output = "Datenmanipulation 1"; printf("2. %s \n", _output); Pointer_to_Pointer_Function(&_output); printf("4. %s \n", _output); return 0; } int Pointer_to_Pointer_Function(char** text ) { printf("3. %s \n", *text); char* input = "HalliHallo"; text = &input; printf("3.1. %s \n", *text); return 0; },c++,pointers,parameters,C++,Pointers,Parameters,预期结果: 如何将指向函数指针的指针作为参数? 为什么不使用我的代码 分配时: text = &input; 您只是更改局部变量文本,而不是更改它指向的指针的内容。你应该做: *text = input; 这将使其打印: 4. HalliHallo 你不能把它打印出来 5. HalliHallo 因为Pointer_函数只接受指向字符串的指针,而不是指向变量的指针,所以它不能更改调用方的变量 您还应该更改所有声明以指定const char*和const char**,因为您正在为

预期结果:

如何将指向函数指针的指针作为参数? 为什么不使用我的代码

分配时:

text = &input;
您只是更改局部变量文本,而不是更改它指向的指针的内容。你应该做:

*text = input;
这将使其打印:

4. HalliHallo
你不能把它打印出来

5. HalliHallo
因为Pointer_函数只接受指向字符串的指针,而不是指向变量的指针,所以它不能更改调用方的变量

您还应该更改所有声明以指定const char*和const char**,因为您正在为文本字符串分配指针。以下是完整的工作代码:

#include <string>
#include <iostream>

int Pointer_Function(const char* _output);
int Pointer_to_Pointer_Function(const char** text );

int main() {

    const char* input = "This";
    printf("1. %s \n", input);
    Pointer_Function(input);
    printf("5. %s \n", input);

       int test;
       std::cin >> test;
}

int Pointer_Function(const char* _output) {
       _output = "Datenmanipulation 1";
       printf("2. %s \n", _output);

       Pointer_to_Pointer_Function(&_output);

       printf("4. %s \n", _output);
    return 0;
}

int Pointer_to_Pointer_Function(const char** text ) {

       printf("3. %s \n", *text);
       const char* input = "HalliHallo";

       *text = input;
       printf("3.1. %s \n", *text);
    return 0;
}
分配时:

text = &input;
您只是更改局部变量文本,而不是更改它指向的指针的内容。你应该做:

*text = input;
这将使其打印:

4. HalliHallo
你不能把它打印出来

5. HalliHallo
因为Pointer_函数只接受指向字符串的指针,而不是指向变量的指针,所以它不能更改调用方的变量

您还应该更改所有声明以指定const char*和const char**,因为您正在为文本字符串分配指针。以下是完整的工作代码:

#include <string>
#include <iostream>

int Pointer_Function(const char* _output);
int Pointer_to_Pointer_Function(const char** text );

int main() {

    const char* input = "This";
    printf("1. %s \n", input);
    Pointer_Function(input);
    printf("5. %s \n", input);

       int test;
       std::cin >> test;
}

int Pointer_Function(const char* _output) {
       _output = "Datenmanipulation 1";
       printf("2. %s \n", _output);

       Pointer_to_Pointer_Function(&_output);

       printf("4. %s \n", _output);
    return 0;
}

int Pointer_to_Pointer_Function(const char** text ) {

       printf("3. %s \n", *text);
       const char* input = "HalliHallo";

       *text = input;
       printf("3.1. %s \n", *text);
    return 0;
}

您可以通过改变指针的值来修复最后一个函数 char**指向:

C

要修复这两个函数,可以通过引用传递:

C++

在C++11中,字符串文字在转换过程中具有衰减类型“char const*”
to char*已弃用

您可以通过更改指针的值来修复最后一个函数 char**指向:

C

要修复这两个函数,可以通过引用传递:

C++

在C++11中,字符串文字在转换过程中具有衰减类型“char const*”
to char*已弃用

问题在于您的指针指向函数

int Pointer_to_Pointer_Function(char** text ) {

       printf("3. %s \n", *text);
       char* input = "HalliHallo";

       text = &input;
       printf("3.1. %s \n", *text);
    return 0;
}
将指向char的指针作为参数传递给函数。 变量输入是指向char的指针。因为该文本=&input;这是不对的。您正在将指针的地址分配给指向char的指针。赋值应为*text=&input


您可能注意到这里不需要使用指针对指针;不是因为你在做什么。如果要向函数传递in/out参数,则需要它。

问题在于指针指向指针函数

int Pointer_to_Pointer_Function(char** text ) {

       printf("3. %s \n", *text);
       char* input = "HalliHallo";

       text = &input;
       printf("3.1. %s \n", *text);
    return 0;
}
将指向char的指针作为参数传递给函数。 变量输入是指向char的指针。因为该文本=&input;这是不对的。您正在将指针的地址分配给指向char的指针。赋值应为*text=&input


您可能注意到这里不需要使用指针对指针;不是因为你在做什么。如果要向函数传递in/out参数,您可能需要它。

我只是尝试运行代码,但它不适用于此更改您的输出给出的数字是5……OP希望它说HalliHallo,抱歉,如果我遗漏了什么我解释了为什么指针函数不可能做到这一点,它需要指向指针。啊,我的错,我太忙了,没有时间阅读解释:谢谢@Barmar如果你对“按值调用”和“为什么需要指针指向指针”给出一个简短的解释,可能会更容易理解我只是试着运行你的代码,但它不适用于这个更改你的输出给出的数字5是这样的…OP希望它说HalliHallo,抱歉,如果我遗漏了一些东西,我解释了为什么指针函数不可能做到这一点,它需要指针指向指针。啊,我的错,我太忙了,没有时间阅读解释:谢谢@Barmar如果你对按值调用给出一个简短的解释,以及为什么指针指向指针是必要的,可能会更容易理解