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

時間 2021-12-21 10:39:22

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 接下來寫我們的變數名,注意區分大...