本程式用于測驗:陣列的初始化。
(1) 定義陣列后必須要初始化,不要認為不初始化,系統就會自動初始化為0;如果不初始化,區域變數在堆疊上,各陣列元素的值將是亂數;
(2) 陣列初始化:程式員至少必須把陣列元素的第一個陣列元素初始化為0,剩余的元素系統會自動初始化為0; 實際上,把陣列初始化為0是在編譯時完成的。
(3) 初始化值的個數可少于陣列元素個數.當初始化值的個數少于陣列元素個數時,前面的按序初始化相應值, 后面的初始化為0;
(4) 如果明確指定了陣列大小,當在初始化時指定的元素個數超過這個大小就會產生錯誤. 例如:int array_test[3]={1,2,3,4} 超出了陣列元素個數的界限;
(5) 當陣列定義時沒有指定大小,當初始化采用串列初始化了,那么陣列的大小由初始化時串列元素個數決定。
(6) 一般來說 全域變數、靜態變數處于資料區,默認初始化為0 (如果指定初始值,則為指定的值)區域陣列根據編譯器的特點有所不一樣。
(7) 靜態區域變數和全域變數一樣,資料都存放在全域區域,所以在主程式之前,編譯器已經為其分配好了記憶體,在C中,初始化發生在代碼執行之前,編譯階段分配好記憶體之后,
就會進行初始化.
*/
#include <stdio.h>
#include <string.h>
#include <stdint.h>
static int array_static_global[6]; // 定義全域靜態陣列
int array_global[6]; // 定義全域陣列
int main()
{
int array_1[6]; // 只定義陣列,并未初始化;如果不初始化,那么各陣列元素的值將是亂數;區域變數處于堆疊區,其數值是隨機的,即當時記憶體中的值;
int array_2[6]={0}; // 程式員至少必須把陣列元素的第一個陣列元素初始化為0,才能使剩余的元素自動初始化為0;array_2[6]={0}; <=> array_2[6]={0,0,0,0,0,0};
int array_3[6]={1}; // 該程式并不是把所有元素都賦值為1,只是第一個元素為1,其余都是0;array_3[6]={1}; <=> array_3[6]={1,0,0,0,0,0};
int array_4[6]={1,2,3}; // 當初始化值的個數少于陣列元素個數時,前面的按序初始化相應值,后面的初始化為0; array_4[6]={1,2,3};<=> array_4[6]={1,2,3,0,0,0};
int array_5[]={1,2,3,4,5}; // 當陣列定義時沒有指定大小,當初始化采用串列初始化了,那么陣列的大小由初始化時串列元素個數決定。array_5[]={1,2,3,4,5};<=> array_5[5]={1,2,3,4,5};
static int array_local_static[6]; //定義靜態區域變數,未初始化,系統會自動初始化為0;
for(int i=0; i<6;i++)
{
printf("array_1[%d]=%d\n",i, array_1[i]); // array_1[6]未初始化,輸出結果為隨機值
printf("array_2[%d]=%d\n",i, array_2[i]); // array_2[6]只初始化第一個數,其余系統自動賦值為0
printf("array_3[%d]=%d\n",i,array_3[i]); // array_2[6]只有第一個元素為1,其余系統自動賦值為0
printf("array_4[%d]=%d\n",i,array_4[i]); // array_2[6]初始化一部分,前面的按序初始化相應值1,2,3,后面的系統自動初始化為0
printf(" the array_5[] element of size is %d\n",sizeof(array_5)/sizeof(array_5[0])); // array_5[]有5個初始化值,所以 array_5[]有5個元素:array_5[5]
printf("array_static_global[%d]=%d\n",i,array_static_global[i]); // array_static_global[6]為全域靜態陣列,在未初始化時,系統自動初始化為0;
printf("array_global[%d]=%d\n",i,array_global[i]); // array_global[6]為全域靜態陣列,在未初始化時,系統自動初始化為0;
printf("array_local_static[%d]=%d\n",i,array_local_static[i]); // array_local_static[6]靜態區域變數,定義后未初始化,系統會自動初始化為0;
}
return 0;
}
uj5u.com熱心網友回復:
定義,經常報錯,改一改二,才對。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/35606.html
標籤:單片機/工控
