[英]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.