1樓:街角哦祝福
只有在定義的同時這樣(a[20]="what for")賦值才行,其他不行,這是c語言規定的
要先定義然後再在其他地方賦值的話,就只能乙個乙個元素單獨賦值,不過要是想達到同樣的效果(類似a[20]="what for"),對於字串陣列,可以用庫函式strcpy(...)函式賦值,其他的話,你可以自己寫函式給他們賦初值!!
2樓:
初始化和賦初值並不是一回事。初始化是由編譯器語句完成的,形成.exe檔案後那些初始化結果已經在某個地方放著,不需要再佔用執行時間了;賦初值是由c/c++語句完成的,每次啟動.
exe檔案都要執行一遍,所以要佔用**的執行時間。比如:char a[20]="what for";就是編譯器語句,編譯時編譯器把""中的8個字元乙個接乙個地存放到為char型陣列a分配的20個字元空間的前8個位置,並在第9個位置加放乙個'\0'。
c和c++都沒有提供為陣列整體賦值的功能,所以char a[20];a="what for";顯然是錯誤的。要為已經宣告過的字元型陣列a賦初值,如果要寫入的字串組成是有規律的,則可以用迴圈語句乙個乙個地賦值,如果字串的組成沒有規律,則可以用庫函式進行拷貝賦值,例如char a[20];strcpy(a,"what for");,strcpy就把what for存放在了a的前8個位元組,並在第9個位元組存乙個'\0'作為結束符。使用庫函式要包含相應的標頭檔案,strcpy在string.
h中就有。
3樓:瘋狂**
可以換個定義的方法啊
比如 char a[10] =
定義乙個初始值,然後賦值修改也是一樣的啊
4樓:匿名使用者
char [20]; a="what for"; ????錯了這樣就可以
char a[20];
a[20]="what for";
5樓:匿名使用者
直接輸入就可以了。
scanf();gets();都行啊。
6樓:扯蛋扯扯更健康
乙個對乙個賦值啊!a[0]='w';記得在最後加'/0'
c++字元陣列與字串賦值問題
7樓:匿名使用者
char a ="123";
string s = a;
8樓:
#include
using namespace std;
int main()
;string s;
for (int i=0;i<3;++i)s+=k[i];
cout<
return 0;
}執行通過
9樓:祚胤
char * ch="test";
string str(ch);
建構函式!
10樓:yxl_小路路
例如:string str;
char ch[10]="aaaaaaaa";
str = ch;就行了
11樓:匿名使用者
char ch = 'a';
char * str = sprintf("%c",ch);
12樓:搞中嘢
char str1[10]="abcd";
string str2;
str2=str1;
13樓:匿名使用者
包含標頭檔案
然後在程式中利用strcpy(string_str,char_array),char_array為陣列名,string_str為字串名。
c語言中將字串賦值給字元陣列的問題
14樓:大野瘦子
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。
二、通過字元陣列直接把字串賦值。程式如下:
三、需要注意的一些問題
直接把字串賦值給陣列名(也就是陣列首元素的首位址)是不行的。
15樓:
char a ="toyou";
這才是對的,要用雙引號。
這種方式叫初始化,是可以的,"toyou"這個字串放在資料區里,在編譯階段就確定了。
a作為陣列名,它是乙個常指標,不能改變所指向的位址,只能是&a[0]所以你在非宣告的地方用a="***",就相當於改變了常量的值,是不允許的。
16樓:
#include
int main()
17樓:豬頭或火寶寶
你好!!!
舉例如下:
char s[20];s="helo";這樣是錯誤的,原因就是不能用賦值語句將乙個字串常量直接給乙個字元陣列賦值。
char s[20];
char ss="hello";
s=ss;這也是錯誤的,原因是不能用賦值語句將乙個字元陣列直接給乙個字元陣列賦值
即字串的複製(c語言中,但是在c++的string 類,上面的賦值是正確的)必須用strcpy()函式實現。
而char a[ ]=」toyou「;為上面是正確呢???那是因為我們在宣告陣列變數的時候就是,為其開闢空間,並為其初始化,這樣才是符合c語言語法的。而上面的都是不符合語法的。
c語言陣列初始化,C語言陣列的初始化表示方法
陣列的編號是從0開始的,所以當i 2時,score 2 實際是第三個數,前面還有score 0 和score 1 兩個數。c語言陣列的初始化表示方法 在c語言中,陣列的初始化有以下幾種方式 1 定義的時候同時初始化 int array 10 2 定義的時候不指定陣列大小,由初始化的陣列元素來確定大小...
關於字元陣列的賦值問題!字元陣列賦值問題
22,選a 理由 字串是以 0 結束的,所以加上 good 就是6個位元組,而陣列的大小才是5,所以空間不夠,大小至少為6,改為 char str 6 good 或者。char str good 都可以,後者根據字串的字元個數自動匹配陣列大小。34,選c 理由 同17題。3,選a 理由 同17題。哥...
C裡初始化二維陣列int a230正確嗎?是什麼意思?謝謝
不可以如果想定義並初始化可以這樣 int a 2 3 表示二維陣列所有值都賦值成0 也可以先定義再初始化,int a 2 3 a 2 3 0 表示把陣列a中第三行第四列數賦值成0 其實bai 這個是進行乙個初始化du,你測試一zhi下,如果你只定dao義了int a 3 2 但是你沒有專賦值的話,你...