c語言memset初始化結構體問題

2021-12-21 10:41:28 字數 989 閱讀 9056

1樓:匿名使用者

1.memset函式的原型void *memset(void *s, char ch, size_t n);

函式的第一個形式引數是指標型別,所以實參因為一個地址,即&a注意&a與a是不同的.a是結構體變數名,而&a是變數a的地址.

2.另外memset()是一個庫函式函式,需要加標頭檔案#include

3.正如你所說的全域性與主函式內定義變數a是有一點區別源**如下:

#include

#include

typedef struct ss

tent;

//tent a;

int main()

主函式內執行結果:

全域性變數執行結果:

這個沒警告的.

已上在vc6.0下的結果

為嘛第二個沒警告,暫時不清楚.但第一個有警告是合理的.

2樓:

memset(&a,0,sizeof(a));

#include

#include

typedef struct ss

tent;

//tent a;

int main()

3樓:楓若神明

樓主你好:

你這裡面有幾個錯誤:

呼叫memset函式需要#include

memset的第一個引數為一個指標,因此你需要memset(&a, 0, sizeof(a))這樣去操作

memset的具體使用你可以通過在命令列輸入:

man memset

來檢視。

全域性變數和區域性變數時都可以的。**見下:

#include

#include

typedef struct ss

tent;

//tent a;

int main()

有問題請追問!

祝樓主學業進步!

c語言指標初始化,c語言指標初始化

int array 4 5 6 一級指標,指標向一個陣列,該陣列為int 4 5 6 int a 4 5 6 pa 二級指標,指向上一行的一級指標 對於動態分配的結構,不可能用陣列這種形式來儲存的。因為陣列的下標必須在編譯時刻明確為常量。樓主用的c 可以考慮用stl的vector。另外,我覺得本身用...

c語言指標初始化的問題

如果你是需要賦字串的,不需要給它分配空間,但是如果你要給指標結構體賦某個值,那是需要給指標指定記憶體空間的,所以你上面的程式只要這樣就好了 main s的話,就是後面的str1之類的東西是要一個地址 main str2 bushishabi 去掉 printf s n s n str1,str2 要...

c語言定義整型陣列並未初始化資料

首先要清楚什麼是初始化 在宣告變數的同時賦值就是初始化。而在其後的賦值語句就不是初始化。一般來說,如果你不給變數一個確定的值,就直接引用它,則系統不能保證執行的唯一性,而這是我們程式所不允許的。所以我們一般用初始化的方法來確定其值。如char str 100 引用memset str,sizeof ...