陣列初始化

2021-04-23 04:12:09 字數 1586 閱讀 9430

cpp中陣列初始化方法

簡單的初始化:

利用定義變數時賦初值進行初始化。

int  a[10] = ;

float     f[10] = ;

char   ch[5] = ;

大括號中的為初始值。

較為複雜的初始化:

利用memset函式初始化。

memset函式用法: void *memset(void *s,int c,size_t n)

將已開闢記憶體空間 s 的首 n 個位元組的值設為值 c

例1:char

str[100];

memset(str, 0, 100);

例2: int

a[10];

memset(a, 0, sizeof(a));

例3:    char

a[10];

memset(a,  '/0',  sizeof(a));

memset可以方便的清空乙個結構型別的變數或陣列.

例: struct stu ;

main()

則 test.name    test.num     test.score的初始化為

簡單的:

test.name = ;

test.num = 0;

test.score = 0;

用memset:

memset(&test, 0, sizeof(struct stu));

如果test是陣列test[5],則這樣初始化

memset(test, 0, sizeof(struct stu) * 5);

memset總結:

作用是在一段記憶體塊中填充某個給定的值,它對較大的結構體或陣列進行清零操作的一種最快方法。} 

如下demo是可以的,能把陣列中的元素值都設定成字元1:

#include 

#include 

using namespace std;

int main()

而,如下程式想吧陣列中的元素值設定成1,卻是不可行的:

#include 

#include 

using namespace std;

int main()

1.因為第乙個程式的陣列a是字元型的,字元型佔據記憶體大小是1byte,而memset函式也是以位元組為單位進行賦值的,所以你輸出沒有問題。而第二個程式a是整型的,使用memset還是按位元組賦值,這樣賦值完以後,每個陣列元素的值實際上是0x01010101即十進位制的16843009。你看看你輸出結果是否這樣? 

2.如果用memset(a,1,20);

就是對a指向的記憶體的20個位元組進行賦值,每個都用ascii為1的字元去填充,轉為二進位制後,1就是00000001,佔乙個位元組。乙個int元素是4位元組,合一起就是1000000010000000100000001,就等於16843009,就完成了對乙個int元素的賦值了。

陣列初始化

flydream flydream c cat x.cpp include using namespace std int main int argc,char argv flydream flydream c flydream flydream c g g wall x.cpp x.cpp in ...

陣列初始化

一 定義陣列 type arrayname 注 1 陣列定義 c語言宣告 時,不能指定陣列長度。2 定義只是在stack中指定了乙個引用變數,heap中未分配記憶體,所以要在初始化後才能使用。二 陣列初始化 1 靜態初始化 arrayname new type 或 arraynane 注 開發中習慣...

陣列初始化

在c 中,乙個變數或陣列變數定義完成後,其值均為系統預設,不一定是我們想要的。一般情況下,全域性變數或陣列系統會自動初始化 整數一般為0,布林型為false,字元型為 0 而區域性變數則為隨機。特別是陣列變數,我們在使用中一定義可能就是很大數量的變數,系統預設的可能非我們想要的,那就存在陣列變數的統...