回覆列表
  • 1 # 使用者5189701024573

    char s[20];s="helo";這樣錯誤的原因就是:不能用賦值語句將一個字串常量直接給一個字元陣列賦值。

    char s[20];

    char ss[]="hello";

    s=ss;錯誤原因是:不能用賦值語句將一個字元陣列直接給一個字元陣列賦值

    ,即字串的複製(c語言中,但是在c++的string 類,上面的賦值是正確的)必須用strcpy()函式實現。

    而char a[ ]=”toyou“;正確的原因是:因為在宣告陣列變數的時候就是,為其開闢空間,併為其初始化,這樣才是符合c語言語法的。

    擴充套件資料:

    C語言中字串賦值的理解

    一、指標式賦值

    上面的示例是顯然可以正常執行的,也是很容易理解的。但是下面這種方式就令人有點難以理解了。

    透過程式的執行情況,我們可以知道:char *p = "hello";這種字串的賦值方式是完全沒有問題的。要理解這種賦值方式,我們首先得理解雙引號(特別注意:這個是雙引號,不要賦值的時候給弄了個單引號)在這個語句中做了什麼工作。雙引號主要做了3個工作,分別是:

    (1)申請了空間(在常量區),存放了字串。

    (2)在字串尾加上了“\0”。

    (3)返回地址。

    這裡所返回的地址就賦值給了char *型別的指標變數p。

    二、透過字元陣列直接把字串賦值。程式如下:

    三、需要注意的一些問題

    直接把字串賦值給陣列名(也就是陣列首元素的首地址)是不行的。

  • 中秋節和大豐收的關聯?
  • 想在雙十二換部安卓手機,有什麼推薦?