簡體   English   中英

c ++將char數組傳遞給函數並進行更改

[英]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];
}

突出點:

  • 按價值返回
  • 使用std :: string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM