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()
有問題請追問!
祝樓主學業進步!
關於結構體初始化,如何在初始化列表中初始化結構體
這個是有原理的。簡單說一下吧 1.要從陣列開始說。比如int a 10 其實系統只是把第一個數賦值為0,其他的數因為沒有引數,系統自動初始化為0,對於int型來說。對於char來說就是 0x0 其他的型別類似。如果是int a 10 那麼就是第一個數是1,其他的數是0。就是1,0,0,0.2.下面到...
c語言進行排序怎麼初始化10000000儲存在陣列
如果一定要用10000000這樣的數 那麼只能迴圈賦值了 沒有簡單的方法 如果是沒有要求一定用10000000這個數字,而是只需要一個比較大的數字,那麼推薦用16843009 因為它的16進位制值為0x01010101 這樣就可以 int map 1000 memset map,0x01,sizeo...
c語言問題 未初始化int變數的初值
c語言問題未初始化int變數的初值是設定錯誤造成的,解決方法為 1 首先我們開啟我們的編譯器,在main函式中寫。2 然後我們宣告定義變數的型別,比如int 整形 double 雙精度 float 浮點型 char 字元型 已 int整形為例。3 之後要有個空格。4 接下來寫我們的變數名,注意區分大...