C語言,結構體中的陣列怎麼賦值,C語言中結構體中的陣列,不能直接賦值嗎

時間 2022-01-15 15:35:03

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 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較...