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函數給這個數組進行填寫東西。這樣是沒有毛病的,下面附錄一個代碼。