C語言結構體陣列的初始化,C語言結構陣列初始化的問題

2022-03-02 21:19:58 字數 3744 閱讀 1658

1樓:匿名使用者

定義成struct list *試試呢?

struct list* creat(char name,int priority,int time)

2樓:匿名使用者

同學,你注意到了create()函式裡面,你又定義了一句:

list pr;

了麼?這句話時關鍵,首先,你在main 函式(我猜應該是main吧)中寫道:

list pr1=creat("p1",2,1);

insert(&pr1);

看,你這個pr1是個區域性變數吧?只在main()中有效的。而你上面那個create中定義的呢?

也是個區域性變數,只在create()中有效。所以,即使你在create()中費勁全力為pr賦值。等呼叫完create()後,pr還是會消亡的,回到main,時,這裡的pr1就是另一個list變數了。

總而言之,creat()裡面的pr和main()裡面的pr1是完全不同的兩個變數。要想讓他們變成一個變數。可選用指標傳參。或者定義成全域性變數。

另外,我一看到你的描述的那個「燙」字,就知道你用的是vc6.0吧?呵呵

3樓:

你的creat函式裡面的pr只是區域性變數,出了這函式範圍就沒用了,怎麼返回給pr1?

建議把其弄成形參。

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

4樓:匿名使用者

你只初始了und[0]

struct undergraduate

und[20]= ,,,

,... ...};

c語言中怎麼把一維陣列初始化為全零啊,不用迴圈

5樓:匿名使用者

下面3種方法:

1.int arr[10]=;

如果只對陣列的一部分進行初始化,則編譯器將把其他元回素設定為0。因此,答當只將第一個元素初始化為0時,編譯器會自動將其他元素設為0 (就像前一句說的那樣)。

2.int arr[31]={};

3.用memset函式在程式開始時初始化陣列。比如:

int arr[1024];

memset(arr, 0, 1024); //清零

6樓:幻の上帝

2種方法:

1.靜態變數制(全域性變數、靜態區域性變數)即使沒有初始化列表,也會自動全部初始化填充0。

2.對於區域性自動變數,只要初始化列表存在,即使沒有在列表中的部分也會被初始化填充0。所以只要使初始化列表全為零即可。

例如ls所說的int a[10] = ;。注意這裡陣列大小不能省略,否則初始化列表會被當做陣列的全部內容。

----

至於memset,類似於迴圈批量賦值(只是交給庫函式實現了而已),並非初始化。(其實迴圈不也是賦值麼- -。)

1l用法有誤,應為memset(陣列地址, 0, sizeof(陣列變數)),第三個引數應該是陣列所佔空間大小而不是陣列的元素個數(長度)。

使用memset前需#include。

----

[原創回答團]

7樓:天雲一號

具體初始來化方法可以參考如下程源序段:(方法bai一)int a[5] = ;  // 將整型陣列a的每du個元素都初始化為

zhi0

或者也可以用如下方dao法進行初始化:(方法二)int a[5] = ; // 將整型陣列a的每個元素都初始化為0,初始化效果同上

方法一的初始化方法是將陣列元素都初始化為同一個數值;

方法二的初始化方法可以分別對陣列的每個元素進行初始化,每個元素的數值可以不同。

8樓:匿名使用者

設定一個靜態陣列,就預設0了

如 static int a【8】;

9樓:陽光上的橋

例子:int i,j,ok[10];

memset(ok,0,sizeof(ok));

memset就能完成你的功能。

10樓:匿名使用者

很簡單 只要初始化第一個就行可以了,其他的會自動初始化為0,如下

int a[size]=;

11樓:匿名使用者

memset(陣列地址,0,陣列長度);

12樓:匿名使用者

int a[10]=;

13樓:匿名使用者

vc 裡可以用 int a[size] = ;

不行的話就用 static int a[size] = ; 吧....

c語言,結構體中的陣列怎麼賦值,?

14樓:yesyes科

1、首先開啟vs2010軟體,新建一個專案,如圖所示。

2、裡面包含標頭檔案,如圖所示。

3、然後輸入入口函式main。

4、接著定義一個結構體,宣告結構體變數,如圖所示。

5、然後給結構體裡面的成員變數賦值。

6、最後列印結構體成員,輸出結果就完成了。

15樓:老朱

s.a[0]=1;

s.a[1]=2;

16樓:

你程式中的那種賦值方式只能在陣列定義的時候賦值,定義完成後,就要一個一個的賦值。比如:s.

a[0] = 1;s.a[1] = 2;如果賦值有一定規律的話,可以用for迴圈;如果賦的值一樣的話,可以用 memset(s.a,0,sizeof(s.

a));,memset一般用於陣列初始化和清零。

17樓:匿名使用者

如果沒記錯的話只能是陣列初始定義的時候才可以這樣賦值。

只能一個一個賦值,s.a[0]=1; 這樣是合法的

想給陣列賦值的話用迴圈吧

18樓:army1椒rz迫

對於已經定義好了的陣列,肯定不能用這樣賦值啦,給結構體賦值其實就跟其他的變數賦值一樣,難道你可以

int a[3];

a=;這個給一個int陣列賦值嗎,不行啊。

正確的做法就是像其他變數一樣一個一個賦值,當然也可在結構體初始化時賦值

c語言怎麼給結構體的陣列初始化?說的不太明白,具體看下面例子

19樓:大維

c的陣列初始化!必須在宣告的時候才可以用 a[5] = ; 宣告的時候沒有初始化!就只能一個元素一個元素賦值了!

20樓:匿名使用者

struct xc//或者 c=;(記不清要不要c99了)//或者strcpy(c,"kook");(自己注意新增標頭檔案)//或者c.b[0]='k';c.b[1]='o';c.

b[2]='o';c.b[3]='k';

或者char *d="kook";

for(int i=0;i

printf("%s",c.b);

隨便舉幾個例子,寫法不嚴謹(越往後方法越那什麼...),大佬輕噴

21樓:來自流坑村眼開眉展的雪梨

不能這樣,應該是:

stu.xingming="jiyu";

這樣就行了。

22樓:

這樣stu.xingming = "jiyu"就行了,不用帶下標。

關於C語言裡的初始化問題為什麼要初始化

區域性變數初始化 是指在使用這個區域性變數前,要對其進行初始化。這是因為區域性變數是從記憶體堆中分配的,用完就還給記憶體堆,所以被分配的區域性變數並不一定是0,而很可能是其他地方用過的一個值,因此在使用這個變數之前,要對它進行顯示初始化。c的區域性變數一般是在棧上進行分配的。棧使用的是ram,掉電內...

有關於C 多維陣列的初始化,C 的二維陣列初始化

c 是在c語言的基礎上開發的一種物件導向程式語言,應用廣泛。c 支援多種程式設計正規化 物件導向程式設計 泛型程式設計和過程化程式設計。最新正式標準c 於2014年8月18日公佈。其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類 類...

c語言中怎麼把結構體陣列寫入檔案

c語言把一個結構體陣列寫入檔案分三步 1 以二進位制寫方式 wb 開啟檔案 2 呼叫寫入函式fwrite 將結構體資料寫入檔案 3 關閉檔案指標 相應的,讀檔案也要與之匹配 1 以二進位制讀方式 rb 開啟檔案 2 呼叫讀檔案函式fread 讀取檔案中的資料到結構體變數 3 關閉檔案指標 inclu...