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 而區域性變數則為隨機。特別是陣列變數,我們在使用中一定義可能就是很大數量的變數,系統預設的可能非我們想要的,那就存在陣列變數的統...