Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用双指针通过引用调用字符串_C_String_Pass By Reference - Fatal编程技术网

C 使用双指针通过引用调用字符串

C 使用双指针通过引用调用字符串,c,string,pass-by-reference,C,String,Pass By Reference,大家好,我在使用一个引用字符串作为参数的函数时遇到了一些问题。我读到你应该用e双指针来做这个,但是我不能让它工作。 这是(部分)我的代码 我的输出是这样的: Enter a command add this is a test stringval 2 = z˜ˇøÀo‡èK‡èT¯ˇø. 我显然想要输入字符串的第二个单词,但我做错了什么。 谢谢你的帮助 stringVal2未初始化且从未填充:这就是正在打印垃圾邮件的原因。在这种情况下,不需要传递char**,传递char*将起作用。然而,这:

大家好,我在使用一个引用字符串作为参数的函数时遇到了一些问题。我读到你应该用e双指针来做这个,但是我不能让它工作。 这是(部分)我的代码

我的输出是这样的:

Enter a command
add this is a test
stringval 2 = z˜ˇøÀo‡èK‡èT¯ˇø.
我显然想要输入字符串的第二个单词,但我做错了什么。
谢谢你的帮助

stringVal2
未初始化且从未填充:这就是正在打印垃圾邮件的原因。在这种情况下,不需要传递
char**
,传递
char*
将起作用。然而,这:

outputString = strTemp2;
不将
strTemp2
的内容复制到
outputString
:它使
outputString
指向与
strTemp2
相同的地址:使用
strcpy()


例如,当函数为参数分配新缓冲区时,通常会将双指针(
char**
)传递给该函数(在发布的代码中并非如此):


你没有收到任何编译器警告吗?尝试使用-Wall选项编译,让我们知道警告消息是什么。这甚至不应该编译
&stringval2
是指向数组的指针,而不是指向指针无问题的指针,欢迎使用堆栈溢出。只是要指出,如果答案解决了您的问题,那么接受答案是正常的(通过单击答案左侧的白色勾号)。但是,只有当它回答了问题并且是最好的答案时,才接受它(因此,可能值得等待,看看是否有其他人发布了更有用的答案)。
outputString = strTemp2;
char* buf = NULL;
my_alloc(&buf);

void my_alloc(char** p)
{
    *p = malloc(10);
}