(原創) 如何对array或struct做初始化? (memset()) (C/C++) (C)
生活随笔
收集整理的這篇文章主要介紹了
(原創) 如何对array或struct做初始化? (memset()) (C/C++) (C)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當宣告C/C++的built-in type后,必須馬上initialize該變量的值,因為C/C++在宣告變量時,僅為該變量配置了一塊內存,卻沒對該變量設定任何初始值,所以該變量目前的值為宣告該變量前所殘留的值,雖可直接使用該變量,但并沒有任何意義。
尤其在使用array時,當宣告完array及其大小后,第一件事情就是為array中所有element設定初始值,通常我們會用for來設定
?2#include?<stdio.h>
?3
?4#define?ia_size?5
?5
?6int?main()?{
?7??int?ia[ia_size];
?8??for(int?i?=?0;?i?!=?ia_size;?++i)?{
?9????*ia?=?0;
10??}
11
12??for(int?i?=?0;?i?!=?ia_size;?++i)?{
13????printf("%d",*ia);
14??}
15
16??return?0;
17}
用for寫最少要兩行程序,若使用memset(),只要一行就可搞定
?1/**//*?
?2(C)?OOMusou?2006?http://oomusou.cnblogs.com
?3
?4Filename????:?memset0.cpp
?5Compiler????:?Visual?C++?8.0?/?gcc?4.1.0
?6Description?:?The?memset()?function?fills?the?first?n
?7??????????????bytes?of?the?memory?area?pointed?to?by?
?8??????????????s?with?constant?byte?c.
?9Synopsis????:?#include?<string.h>?
10??????????????void*?memset(void*?s,?int?c,?size_t?n);
11Release?????:?11/25/2006
12*/
13#include?<string.h>
14#include?<stdio.h>
15
16#define?ia_size?5
17
18int?main()?{
19??int?ia[ia_size];
20??memset(ia,0,sizeof(ia));
21
22??for(int?i?=?0;?i?!=?ia_size;?++i)?{
23????printf("%d",*ia);
24??}
25
26??return?0;
27}
memset()除了可以初始化array外,也可用來初始化struct
?1/**//*?
?2(C)?OOMusou?2006?http://oomusou.cnblogs.com
?3
?4Filename????:?memset1.cpp
?5Compiler????:?Visual?C++?8.0?/?gcc?4.1.0
?6Description?:?The?memset()?function?fills?the?first?n
?7??????????????bytes?of?the?memory?area?pointed?to?by?
?8??????????????s?with?constant?byte?c.
?9Synopsis????:?#include?<string.h>?
10??????????????void*?memset(void*?s,?int?c,?size_t?n);
11Release?????:?11/25/2006
12*/
13
14#include?<string.h>
15#include?<stdio.h>
16
17struct?Foo?{
18??int?no;
19??double?d;
20};
21
22int?main()?{
23??Foo?foo;
24??memset(&foo,0,sizeof(foo));
25
26??printf("%i\n",foo.no);
27??printf("%d\n",foo.d);
28
29??return?0;
30}
Reference
Linux C函式庫詳解辭典 P.73, 徐千祥, 旗標出版社
總結
以上是生活随笔為你收集整理的(原創) 如何对array或struct做初始化? (memset()) (C/C++) (C)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell脚本(查看多台服务器端口)
- 下一篇: [OTs]I miss u folks