1樓:問明
(1)用字元常量逐個初始化陣列。例如:
char a[8]=;
把8個字元依次分別賦給c[0]~c[7]這8個元素。
如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。如果花括號中提供的初值個數(即字元個數)大於陣列長度,則出現語法錯誤。
如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元素,其餘的元素自動定為空字元(即'\0')。
如果提供的初值個數與預定的陣列長度相同,在定義時可以省略陣列長度,系統會自動根據初值個數確定陣列長度。
例如:char c=;
這時c陣列的長度自動定為9。也可以定義和初始化一個二維字元陣列,例如:
char diamond[5][5]=,,,
,};用它代表一個菱形的平面圖形。
(2)字串常量初始化陣列。例如:
char c=;
可寫為:char c=;
或去掉{}寫為:char c="c program";
char c=;
其定義的一般形式是:char陣列名[資料長度]
例如:char c[10];
c[0]='i';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';
以上定義了c為字元陣列,包含10個元素。
由於字元型資料是以整數形式(ascii**)存放的,因此也可以用整型陣列來存放字元資料,例如:
int c[10];
但這時每個陣列元素佔2個位元組的記憶體單元,浪費儲存空間。
字元陣列也可以是二維或多維陣列,例如:
char c[5][10];
即為二維字元陣列。
初始化字元陣列的初始化與數值型陣列初始化沒有本質區別。但它除了可以逐個給陣列元素賦予字元外,也可以直接用字串對其初始化。
輸入輸出
字元陣列的輸入
(1)用getchar()或scanf()的'%c'格式符對陣列進行字元賦值。例如,對於陣列a[10]:用getchar()賦值:
for(i=0;i<10;i++)
a=getchar();
用scanf()賦值:
for(i=0;i<10;i++)
scanf("%c",&a);
(2)用scanf()的'%s'格式對陣列賦值。還是對於陣列a[10]:
scanf("%s",a);
或scanf("%s「,&a[0]);
輸入」c program「並回車時,a陣列會自動包含一個以」\0「結尾的字串」c program「。
字元陣列的輸出
(1)用putchar()或printf()的『%c』格式符對陣列進行字元賦值。例如,對於陣列a[10]:用putchar()賦值:
for(i=0;i<10;i++)
a=putchar();
用printf()賦值:
for(i=0;i<10;i++)
printf("%c",a);
輸出結果為:
c program
(2)用printf()的'%s'格式對陣列賦值。還是對於陣列a[10];
printf("%s",a);
輸出結果為:
c program
2樓:遊元旋箕綸
你程式中的那種賦值方式只能在陣列定義的時候賦值,定義完成後,就要一個一個的賦值。比如:s.a[0]
=1;s.a[1]
=2;如果賦值有一定規律的話,可以用for迴圈;如果賦的值一樣的話,可以用
memset(s.a,0,sizeof(s.a));,memset一般用於陣列初始化和清零。
3樓:其興業令躍
如果沒記錯的話只能是陣列初始定義的時候才可以這樣賦值。
只能一個一個賦值,s.a[0]=1;
這樣是合法的
想給陣列賦值的話用迴圈吧
4樓:浦小雨漆娜
對於已經定義好了的陣列,肯定不能用這樣賦值啦,給結構體賦值其實就跟其他的變數賦值一樣,難道你可以
inta[3];
a=;這個給一個int陣列賦值嗎,不行啊。
正確的做法就是像其他變數一樣一個一個賦值,當然也可在結構體初始化時賦值
c語言,結構體中的陣列怎麼賦值,?
5樓:念憶
intmain(void);
printf("%d,%s\n",bao.id,bao.name);//輸出是4224528,空(應該是null)
//structstudentsbao=;可以。第一種賦值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s\n",bao.id,bao.name);
//bao.name="bao";錯誤「stray'\351'inprogram」其他是亂碼,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s\n",bao.id,bao.name);
/*這樣可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error"assignmenttoexpressionwitharraytype"
//scanf("%s",bao.name);//可以,
//printf("%d,%s\n",bao.id,bao.name);
//所以scanf那一類函式都可以。
//還有就是memcpy函式也是可以
return0;}
6樓:yesyes科
1、首先開啟vs2010軟體,新建一個專案,如圖所示。
2、裡面包含標頭檔案,如圖所示。
3、然後輸入入口函式main。
4、接著定義一個結構體,宣告結構體變數,如圖所示。
5、然後給結構體裡面的成員變數賦值。
6、最後列印結構體成員,輸出結果就完成了。
7樓:問明
(1)用字元常量逐個初始化陣列。例如:
char a[8]=;
把8個字元依次分別賦給c[0]~c[7]這8個元素。
如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。如果花括號中提供的初值個數(即字元個數)大於陣列長度,則出現語法錯誤。
如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元素,其餘的元素自動定為空字元(即'\0')。
如果提供的初值個數與預定的陣列長度相同,在定義時可以省略陣列長度,系統會自動根據初值個數確定陣列長度。
例如:char c=;
這時c陣列的長度自動定為9。也可以定義和初始化一個二維字元陣列,例如:
char diamond[5][5]=,,,
,};用它代表一個菱形的平面圖形。
(2)字串常量初始化陣列。例如:
char c=;
可寫為:char c=;
或去掉{}寫為:char c="c program";
char c=;
其定義的一般形式是:char陣列名[資料長度]
例如:char c[10];
c[0]='i';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';
以上定義了c為字元陣列,包含10個元素。
由於字元型資料是以整數形式(ascii**)存放的,因此也可以用整型陣列來存放字元資料,例如:
int c[10];
但這時每個陣列元素佔2個位元組的記憶體單元,浪費儲存空間。
字元陣列也可以是二維或多維陣列,例如:
char c[5][10];
即為二維字元陣列。
初始化字元陣列的初始化與數值型陣列初始化沒有本質區別。但它除了可以逐個給陣列元素賦予字元外,也可以直接用字串對其初始化。
輸入輸出
字元陣列的輸入
(1)用getchar()或scanf()的'%c'格式符對陣列進行字元賦值。例如,對於陣列a[10]:用getchar()賦值:
for(i=0;i<10;i++)
a=getchar();
用scanf()賦值:
for(i=0;i<10;i++)
scanf("%c",&a);
(2)用scanf()的'%s'格式對陣列賦值。還是對於陣列a[10]:
scanf("%s",a);
或scanf("%s「,&a[0]);
輸入」c program「並回車時,a陣列會自動包含一個以」\0「結尾的字串」c program「。
字元陣列的輸出
(1)用putchar()或printf()的『%c』格式符對陣列進行字元賦值。例如,對於陣列a[10]:用putchar()賦值:
for(i=0;i<10;i++)
a=putchar();
用printf()賦值:
for(i=0;i<10;i++)
printf("%c",a);
輸出結果為:
c program
(2)用printf()的'%s'格式對陣列賦值。還是對於陣列a[10];
printf("%s",a);
輸出結果為:
c program
8樓:老朱
s.a[0]=1;
s.a[1]=2;
9樓:
你程式中的那種賦值方式只能在陣列定義的時候賦值,定義完成後,就要一個一個的賦值。比如:s.
a[0] = 1;s.a[1] = 2;如果賦值有一定規律的話,可以用for迴圈;如果賦的值一樣的話,可以用 memset(s.a,0,sizeof(s.
a));,memset一般用於陣列初始化和清零。
10樓:匿名使用者
如果沒記錯的話只能是陣列初始定義的時候才可以這樣賦值。
只能一個一個賦值,s.a[0]=1; 這樣是合法的
想給陣列賦值的話用迴圈吧
11樓:army1椒rz迫
對於已經定義好了的陣列,肯定不能用這樣賦值啦,給結構體賦值其實就跟其他的變數賦值一樣,難道你可以
int a[3];
a=;這個給一個int陣列賦值嗎,不行啊。
正確的做法就是像其他變數一樣一個一個賦值,當然也可在結構體初始化時賦值
c語言中結構體中的陣列,不能直接賦值嗎
12樓:匿名使用者
t2.mark=t1.mark;//mark為結構體中的陣列,不能直接賦值??
是的,陣列名是個靜態地址值,不能被修改,如果想把資料儲存到其中,可以用memcpy()函式進行記憶體拷貝,或採用迴圈進行賦值
#include
memcpy( t2.mark, t1.mark, sizeof(t2.mark) );
13樓:匿名使用者
陣列不能整體賦值,需要逐個元素賦值,但是如果這個陣列是一個結構體的成員,可以通過結構體之間的直接賦值間接達到陣列整體賦值的效果,即:
t1.mark=t2.mark;//非法,陣列不能直接整體賦值。
t1=t2;//合法,在此之後,t2.mark陣列將被整體複製到t1.mark陣列。
c語言陣列賦值求平均數,C語言陣列賦值求平均數
include int main void printf n平均數為 f n sum 30 列印平均數 return 0 看初學者寫的問題實在是件很痛苦的事 include stdio.h void main printf 平均數為 d sum i c語言一維陣列求平均值 c語言一維陣列求平均值的源...
c語言陣列賦值問題,c語言中如何給陣列定義並賦初值?
靈凍冰晶霜月 我不清楚你想問什麼,不過第二種寫法是對的。char chars 11 是定義了一個初始值為空總數為11的字元陣列。char s c language 定義一個總數為11的字元陣列,但是有初值。注意是11個不是10個,用這種方定義的字元陣列末尾會加一個 0。陣列的賦值通常是使用花括號來表...
c語言結構體定義,C語言結構體定義
c語言結構體定義 struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成員列表,其必須列出其所有成員 variable list為此結構體宣告的變數。結構體是c語言中聚合資料型別 aggregatedatatype 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較...