2011-12-17 67 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"

相關問題