日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

(原創) 如何对array或struct做初始化? (memset()) (C/C++) (C)

發布時間:2023/12/31 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (原創) 如何对array或struct做初始化? (memset()) (C/C++) (C) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當宣告C/C++的built-in type后,必須馬上initialize該變量的值,因為C/C++在宣告變量時,僅為該變量配置了一塊內存,卻沒對該變量設定任何初始值,所以該變量目前的值為宣告該變量前所殘留的值,雖可直接使用該變量,但并沒有任何意義。

尤其在使用array時,當宣告完array及其大小后,第一件事情就是為array中所有element設定初始值,通常我們會用for來設定

?1#include?<string.h>
?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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。