c語言不能把字元常量賦值給字元陣列

2022-05-23 19:42:08 字數 676 閱讀 4441

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

char s[20];

char ss="hello";

s=ss;這也是錯誤的,原因是不能用賦值語句將乙個字元陣列直接給乙個字元陣列賦值

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

而char a[ ]=」toyou「;為上面是正確呢???那是因為我們在宣告陣列變數的時候就是,為其開闢空間,並為其初始化,這樣才是符合c語言語法的。而上面的都是不符合語法的。

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

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

(2)在字串尾加上了「\0」。

(3)返回位址。

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

我們可以先定義乙個陣列,然後再通過scanf函式給這個陣列進行填寫東西。這樣是沒有毛病的,下面附錄乙個**。

不能用字串給字元陣列賦值

c和指標 pointers on c 8.1.11 乙個字串,如 hello 一般為字串常量,可以用它對字元指標賦值,或初始化,相當於把這個字串常量的首位址賦給這個指標,如 char p hello 或者 char p p hello 但是,當用 hello 給字元陣列作初始化時,hello 並非乙...

C語言 字串常量賦值給指標後不可修改原因分析

字串賦值給乙個指標後,再次賦值的時候發現會報錯。而將指標當作指標陣列賦值時,卻可以修改。char a char malloc sizeof char 5 char b char malloc sizeof char 5 a abc 0 b 0 a b 1 b b 2 c b 3 0 a 0 e b ...

c語言字元常量和字串常量 C語言中的字元常量

c語言字元常量和字串常量 any character a single character that is enclosed within the single quotes like,a is calledcharacter constants in c programming language....