簡體   English   中英

在C查詢中固定數組大小

[英]Fixed Array Size In C query

抱歉,添麻煩了。 我有以下初始化為大小1的數組列表。但是,我可以執行scanf並循環遍歷list [0]到list [4],而在Visual Studio 2010中沒有任何問題。

這里不應該有錯誤嗎?

void main()
{   
    int i=0,menu_choice=0;
    int size;
    int list[1]; //array initialized with size 1
    do{ 
        printMenu();
        printf("Enter Your Choice: ");
        scanf("%d",&menu_choice);
        switch(menu_choice){
        case 1:
            printf("\n");
            printf("Enter array size: ");
            scanf("%d",&size);
            printf("Enter %d numbers: ",size);
            for(i=0;i<size;i++)
            {
                scanf("%d",&list[i]);
            }   
            for(i=0;i<size;i++)
            {
                printf("%d",list[i]);
            }
            break;

        default :
            printf("Please select the right choice \n");
            break;
        }

    }
    while(menu_choice!=8);


}

C不會像您的友好鄰域Java那樣執行隱式數組邊界檢查。

當程序員不小心時,C會很樂意讓程序從數組(或任何分配的內存)的末端運行。 這導致不確定的行為(通常是內存分段或違規錯誤),並且是黑客的常見攻擊媒介( 緩沖區溢出 )。

C ++也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM