1、初始化數組
定義完數組之後有三種初始化方式
-
int A[20]={0};
-
int A[20]; for(i=0;i<sizeof(A)/sizeof(A[0]);i++) A[i]=0;
-
此外對于全局變量和靜态變量在定義之後會由編譯器自動初始化為0int A[20]; memset(A, 0, sizeof(A));
2、關于memset初始化與指派問題
memset是C/C++提供的函數初始化函數,在C中頭檔案是<string.h>,在C++中頭檔案是。在此強調一下,可以用memset給一個數組初始化為0、-1或一個很大的數,但是不要用memset函數來賦具體的值。因為:
-
memset是将從位址s開始,位元組長度為n的記憶體全部指派為ch(注意是每一個位元組都指派為ch)void *memset(void *s, int ch, size_t n);
-
是以,當memset(記憶體位址,1,位元組數)這句的意思是要把直定的記憶體空間的值設定為0x01。對于char型數組B,正好是每個元素占一個位元組,是以這樣指派就是将數組B中所有的元素都指派為1,沒有問題。char B[20]; memset(B, 1, sizeof(B));
-
但是對于int型數組C,每個元素占四個位元組。也就是說将數組C中的每個元素指派成0x01010101,對應的十進制就是16843009。int C[20]; memset(C, 1, sizeof(C));