日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

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

當(dāng)宣告C/C++的built-in type后,必須馬上initialize該變量的值,因?yàn)镃/C++在宣告變量時(shí),僅為該變量配置了一塊內(nèi)存,卻沒對(duì)該變量設(shè)定任何初始值,所以該變量目前的值為宣告該變量前所殘留的值,雖可直接使用該變量,但并沒有任何意義。

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

?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, 徐千祥, 旗標(biāo)出版社

總結(jié)

以上是生活随笔為你收集整理的(原創) 如何对array或struct做初始化? (memset()) (C/C++) (C)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。