我想更改传递给函数的实际参数,而不是它的副本。例如:如何更改传递给C中函数的实际参数?
char str[] = "This is a string";
我想调用其中的str
值是不同后创建一个函数。我试图创建一个接受char**
作为参数的函数,但我无法得到我想要的。
我想更改传递给函数的实际参数,而不是它的副本。例如:如何更改传递给C中函数的实际参数?
char str[] = "This is a string";
我想调用其中的str
值是不同后创建一个函数。我试图创建一个接受char**
作为参数的函数,但我无法得到我想要的。
我想你的意思是这样的:
void update_string(char ** ptr)
{
*ptr = strdup("This is a test");
return;
}
然后调用该函数是这样的:
char * str = strdup("hello world\n");
printf("%s\n", str);
update_string(&str);
printf("%s\n", str);
您可以通过char*
。指针将被复制,但它仍然会指向相同的字符串
如果需要指针本身传递(而不是它的副本),你应该传递一个char**
要更改传递给一个字符串一个函数就地,使用一个普通的指针。例如:
void lower_first_char(char *str)
{
*str = tolower(*str);
}
执行此函数后,传递的字符串的第一个字符将更改为小写。
传递一个char*
,如果你想修改实际的字符串:
foo(str);
...
void foo(char *some_string) {
some_string[0] = 'A';
}
str
现在持有
如果代替str
是一个数组,你有:char *str = "Hello";
,和想修改的地方str
指出,那么你会通过一个char**
:
bar(&str);
...
void bar(char **ptr_string) {
*ptr_string = "Bye";
}
str
现在将点到"Bye"
。
向我们展示您尝试的内容将帮助您获得更好的答案。 – dasblinkenlight 2011-12-17 09:30:57