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函式...