宣告是不賦值; 初始化是給陣列元素賦值。
001、
[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 測試c程式 #include <stdio.h> int main(void) { int ay[3]; // 宣告,不賦值 int by[3] = {3,8,2}; // 初始化,賦值 int i; for(i = 0; i < 3; i++) { printf("ay[%d] = %d\t", i, ay[i]); } puts(""); for(i = 0; i < 3; i++) { printf("by[%d] = %d\t",i, by[i]); } puts(""); return 0; } [root@PC1 test]# gcc test.c -o kkk [root@PC1 test]# ls kkk test.c [root@PC1 test]# ./kkk ## 運算, 宣告後,返回元素的值是不可預期的,為什麼? ay[0] = -1620501232 ay[1] = 32764 ay[2] = 0 by[0] = 3 by[1] = 8 by[2] = 2
。
b、
[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 測試c程式 #include <stdio.h> int main(void) { int ay[3]; // 先宣告 ay[3] = {3,8,6}; // 然後這樣初始化賦值時不可以的,只能單個元素賦值,為什麼會有這種限制? return 0; } [root@PC1 test]# gcc test.c -o kkk ## 編譯報錯 test.c: In function ‘main’: test.c:7:10: error: expected expression before ‘{’ token ay[3] = {3,8,6}; ^
。