c語言中結構體中的一維陣列的初始化(用的是codeblocks)它說我的c

2022-09-19 10:55:15 字數 3425 閱讀 2114

1樓:匿名使用者

結構體內定義資料成員時,是不能對於陣列進行賦值的。

這樣就行了:

#include

#include

int main()

;}b;

b.length=20;

for(j=0;j<20;j++)

b.c[j]=j+1;

printf("請輸入i,k\n");

scanf("%d%d",&i,&k);

for(count=1;count<=20;count++)b.length-=k;

printf("%d\n",b.length);

for(j=0;j<20;j++)}

2樓:匿名使用者

樓主的**有諸多需改:

1.結構體裡不能賦值,所以c必須是 c[20];

2.樓主需要考慮陣列越界的情況,count+i-1+k <20 因為陣列定義是從0開始 最大序號是19<20所以在使用迴圈時需考慮越界,因為這裡越界恰好會出問題,不贅述。

3.輸出b.c當中的元素時,樓主寫成 b.elem 這個陣列可沒有定義過。猜測是 b.c吧。

綜合修改之後**如下:

#include

#include

int main()

b;b.length=20;

for(int t=1;t<10;t++) // b.c[20]=b.c[t-1]=t;

printf("請輸入i,k\n");

scanf("%d %d",&i,&k);

printf("%d\n",k);

for(count=0;count<20-i+1-k;count++)

b.length-=k;

for(j=0;j<20;j++)

return 0;

}不會報錯,也能大致完成樓主的需求。

3樓:匿名使用者

struct a}b;

4樓:匿名使用者

結構體裡不能初始化資料

c語言結構陣列初始化的問題

5樓:匿名使用者

你只初始了und[0]

struct undergraduate

und[20]= ,,,

,... ...};

c語言中一維陣列的初始化是什麼意思,有什麼作用??

6樓:修者世界

一維陣列初始化就是給一維陣列賦初值,作用就是申明的這個一維陣列有了一個確定的值,從而可以得到具體應用。一個陣列申明後,如果沒有賦值,那麼只是分配了記憶體空間,沒有具體的值,也可以說是空,其組成是「\0」也就是null,無法在實際中使用。

例:char str[20];

str="this is a array";

7樓:匿名使用者

為陣列的元素賦初始值,和其他初始化一樣,形式如下:

int arr[4] = ; 大括號中值的個數可以小於陣列元素個數,此時,未被初始化的元素被賦值為0;不能多於陣列元素個數,否則報錯。

如何用codeblocks完成結構陣列的初始化?

8樓:匿名使用者

你只初始了und[0]

struct undergraduate

und[20]= ,,,

,... ...};

c語言中 結構體中有二維陣列怎樣賦初值

9樓:

最基本的方法就是:

mx[0].name[0] = x;

mx[0].information[0][0] = x;

以此類推 ……

陣列不能整體直接賦值,以下情況除外:

1. 初始化時賦值:

typedef struct star

char name[8];

char information[2][2];

}mx;

mx mx[2] = ,

}},//為了你能看清楚mx[0]分了三行,此處之前是mx[0],下面是mx[1]

,}}};

2. 把陣列放在結構裡,兩個結構可以直接賦值。

3. memcpy等方法。

需要注意幾點,

你的name是個位元組,所以如果name的大括號裡用「zhangsan」,會踩記憶體,初學者常犯的錯誤,因為這種賦值隱含了"\0",字串的截止符,換句話說你賦值zhangsan是8個byte+「\0」,這樣就超過name[8]了。

你可以嘗試指標×pname;

希望對你有所幫助。

10樓:匿名使用者

struct starmx=

11樓:匿名使用者

,},

12樓:滄海雄風

mx[2] =,};

c語言中結構體陣列中的整型陣列怎樣引用?

13樓:我喜歡看火影

#include

using namespace std;

int a[6][6];

struct strarray//宣告一個結構體stra[10];//定義一個結構體陣列

int main()

for(i=0;i<10;i++)//輸出看下結果return 0;}

14樓:

結構體陣列等於若干個結構體變數的集合,而結構體變數是一組資料的集合(就像你說的整型陣列)

輸出的時候是輸出結構體變數中的資料,輸出的格式是 結構體變數名.成員名

15樓:

#define n 100

typedef struct _nodenode;

node *pnode = new node[n];

假如取pnode中的第5個,中的第10個int陣列,那麼就是pnode[5].data[10];

關於c語言中結構體變數中陣列成員問題

16樓:慧雪

boy1.name[20]="zhang ping";此形式不對,name是陣列,陣列在初始化時可以寫成name[20]="zhang ping";但是定義之後在函式的執行部分中就不能這樣寫了,可以用字串拷貝函式,即寫成strcpy(boy1.name,"zhang ping");

c[2]=

錯誤,要逐個元素賦值。寫成e.c[0]=1;e.c[1]=2;

或者在定義結構體變數e時初始化:

struct a e=;

c語言中陣列指標和結構體指標問題

樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...

C語言中一維陣列正確的定義

內容來自使用者 落崖一號 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。一個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 ...

c語言中陣列動態增長有哪些方法,c語言 一維陣列如何增加長度

可以,但不能是靜態陣列如int a 50 左邊分配在堆疊上,分配在堆疊上的變數 不能在編譯時不知道分多少空間,並且分了多少空間就是多少。如果想讓陣列大小動態分配,可以使用下面做法,記得用完要free int a int malloc n sizeof int n是陣列的大小。或者這樣calloc函式...