[英]c++ pass char array to function and change it
我嘗試創建一個可以更改指定char數組內容的函數
void change_array(char *target)
{
target="hi";
}
int main()
{
char *a[2];
change_array(a[1]);
cout<<*(a[1]);
}
但是[1]的內容保持在0x0(無效)
首先,你的函數有一個傳遞給它的指針的副本,所以在調用方沒有看到效果。 如果要修改函數參數,請傳遞引用:
void change_array(char*& target) { ... }
// ^
其次,你不能/不應該將非const指針綁定到字符串文字。 請改用const char*
。
void change_array(const char*& target) { ... }
// ^^^^^ ^
int main()
{
const char* a[2];
change_array(a[1]);
cout<<*(a[1]);
}
將參數傳遞給函數時,它通常按值傳遞,這意味着它的值被復制。 如果你想改變它,你必須通過引用傳遞它。 對於指針也是如此,如果你想更改指針,那么你也需要通過引用傳遞它:
void change_array(const char*& target) { ... }
您需要將其作為參考傳遞:
void change_array(char*&target)
{
target="hi";
}
否則,您只需更改target
的本地副本,這不會對函數外部的值產生任何影響。
請嘗試此設計:
std::string get_string()
{
return "hi";
}
int main()
{
std::string a[2];
a[1] = get_string();
std::cout<< a[1];
}
突出點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.