c語言中陣列的宣告喝初始化的區別和聯絡

小鲨鱼2018發表於2024-10-27

宣告是不賦值; 初始化是給陣列元素賦值。

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};
          ^

相關文章