簡體   English   中英

數組超出應有的水平

[英]array getting more than it should

char name[4][20];
int count=0;
cout<<"Enter 4 name at most , one name per line:\n";
while(cin.getline(name[count++],20))
 ;
--count;

(其余的代碼用於打印,如果您也需要在末尾看到的話)

當我輸入的名稱超過4個時,它仍會打印這些名稱,但是怎么辦? 因為第一個維度是4,所以它怎么能超過四個

printing part of code:

for(int i=0; i<count; i++)
{
        cout<<i<<"="<<name[i]<<endl;
}
system("pause");
}

您需要告訴while()循環何時停止。

嘗試這個:

char name[4][20];
int count=0;
cout<<"Enter 4 name at most , one name per line:\n";
while(count < 4 && cin.getline(name[count++],20))
    ;

如果我沒弄錯,您會問“為什么數組是否為4我可以容納5?”。
與Pascal不同,Pascal在運行時檢查數組邊界,而C ++則不會這樣做。

想一想。 數組只是一些指針,稍后會添加偏移量。
假設您有一個由5個整數組成的數組,然后執行此操作

int a[5];
a[3] = 3;
a[6] = 4;

沒什么錯,因為在第一個賦值中,該語句等於a+12 ,第二個等於a+24 您只是在增加指針,除非您不打擾操作系統,否則您可能會繼續並可能覆蓋其他一些數據。
因此,如果您跨越數組邊界,C ++幾乎不會說什么。 這意味着您必須始終以某種方式知道該數組的大小,只需添加到循環中即可:

while(count < 4 && cin.getline(name[count++], 20));

暫無
暫無

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

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