2011-12-17 99 views
-1

我想更改传递给函数的实际参数,而不是它的副本。例如:如何更改传递给C中函数的实际参数?

char str[] = "This is a string"; 

我想调用其中的str值是不同后创建一个函数。我试图创建一个接受char**作为参数的函数,但我无法得到我想要的。

+1

向我们展示您尝试的内容将帮助您获得更好的答案。 – dasblinkenlight 2011-12-17 09:30:57

回答

2

我想你的意思是这样的:

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); 
0

您可以通过char*。指针被复制,但它仍然会指向相同的字符串

如果需要指针本身传递(而不是它的副本),你应该传递一个char**

0

要更改传递给一个字符串一个函数就地,使用一个普通的指针。例如:

void lower_first_char(char *str) 
{ 
    *str = tolower(*str); 
} 

执行此函数后,传递的字符串的第一个字符将更改为小写。

0

传递一个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"

相关问题