c c 陣列初始化誤區

2021-07-03 13:12:25 字數 499 閱讀 3410

char sztmp[256] = ;

char sztmp2[256] = ;

一開始總認為sztmp的值就全部是0,sztmp2的值全部是1.

結果列印一看,sztmp的值就全部是0,但是sztmp2的第乙個值是1,其他的全部是0

原因: int sztmp[256]=; 第乙個元素是顯式地初始化為var,其餘元素是隱式地初始化為0。

在這裡順便再跟大家一起溫習一下陣列初始化規則:

1.指定陣列大小的情況下:

(1)如果初始化時指定的的元素個數比陣列大小少,剩下的元素都回被初始化為0。

例如  int v5[8]=; 等價於 int  v5[8]=;

(2) 如果初始化時指定的的元素個數與陣列大小相等,則陣列元素就按照列表初始化

例如  int v5[4]=;

2.沒有指定數值大小的情況,當初始化採用列表初始化了,那麼陣列的大小由初始化時列表元素個數決定

例如 int v5 =; //數值的大小為4

關於C C 初始化

1 使用函式進行初始化 void memset void s,int ch,size t n 將s中前n個位元組 typedef unsigned int size t 用 ch 替換並返回 s 在使用之前,c中引入string.h,而c 中引入cstring 1 初始化整數陣列 const int...

關於C C 初始化

1 使用函式進行初始化 void memset void s,int ch,size t n 將s中前n個位元組 typedef unsigned int size t 用 ch 替換並返回 s 在使用之前,c中引入string.h,而c 中引入cstring 1 初始化整數陣列 const int...

C C 陣列的定義與初始化

標準庫里memset的原始碼 void memset void s,int c,size t n 申請空間 int array 3 int array new int 10 動態分配 初始化 int array 3 memset array,0,sizeof array 或者 memset arra...