評價: 1 回應: 3 閱覽: 1112
置頂

動態陣列

剛接觸動態配置的部分,如問了蠢問題見諒謝大大!

為何*array宣告成int就會掛掉?只有char能通過...

void main()
{

        int x, num,_scanf;
        char *array;                    //這裡為何不能宣告成int

        printf("請輸入陳列大小:");
        scanf("%d", &x);

        array = malloc(x, sizeof(*array));

        for (int i = 0; i < x;i++)
        {
                printf("請輸入陳列位置%d的數值:",i);
                scanf("%d",&_scanf);
                array[i] = _scanf;
        }
        for (int i = 0; i < x; i++)
        {
                printf("array[%d]=%d\n", i, array[i]);
        }

        free(array);

        system("PAUSE");
        return 0;
}

 

熱門回應

因為他會把array是為一個int的變數,因此會出現int[int]不符合c語言的debug訊息。

意思就是如果array被定義為是一個數字,假如是6,那就會出現6[0],6[1]......是一個矩陣,然而這個矩陣是無效的。

建議要做動態記憶體配置使用vector比較好。

#include <stdio.h>
int main()
{
    int x, num, _scanf;
    int *array;

    printf("請輸入陳列大小:");
    scanf("%d", &x);
    array = (int*)malloc(x*sizeof(int));

    for (int i = 0; i < x; i++)
    {
        printf("請輸入陳列位置%d的數值:", i);
        scanf("%d", &_scanf);
        array[i] = _scanf;
    }
    for (int i = 0; i < x; i++)
    {
        printf("array[%d]=%d\n", i, array[i]);
    }

    free(array);

    system("PAUSE");
    return 0;
}

宣告成    int* array[ ]  試試看吧

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言