我想更改傳遞給函數的實際參數,而不是它的副本。例如:如何更改傳遞給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