[英]How to change the actual argument passed to a function in 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
現在將顯示 "Ahis is a string"
如果不是str
而不是數組, str
具有: char *str = "Hello";
,並想修改str
指向的位置 ,那么您將傳遞一個char**
:
bar(&str);
...
void bar(char **ptr_string) {
*ptr_string = "Bye";
}
str
現在將指向 "Bye"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.