Günlerin bir dizi listesi arasında dolaşan ve ilk 7 gün içinde geçiş yaptığımda, program çöküyor, yeniden başlatılmasını istediğimde, değişken num'te bir int depolayan bir for döngüsüm var 1. günde ve '1' maymununa dönüşür ... ancak ilk döngüden sonra çöker.Döngü çöküyor ... segFault C++
Neyi yanlış yapıyorum? beklenen büyüklükte
C++
//*********************************************************************************************
// function prototype
//*********************************************************************************************
void collectFood(string days[]);
int main(){
//array to hold week days
string days[7] = {"Mon", "Tue", "Wen", "Thur", "Fri", "Sat", "Sun"};
collectFood(days);
}
//*********************************************************************************************
// function to collect foods amounts
//*********************************************************************************************
void collectFood(string days[]){
int num = 0;
// for loop for each monkey
for (int monkey=0; monkey < 3; monkey++){
// for loop to take 7 days worth of food per monkey
for (int day=0; day < sizeof(days); day++){
cout << "Enter the pounds of food eaten by monkey " << monkey
<< " on " << days[day] << ": ";
cin >> num ;
}
}
}
'sizeof (gün);' Oldukça eminim ki, ne düşündüğünüzü kastetmiyor. 64bitlik bir platformda ** 8 ** olacak; 7 değil (ve 32bit platformda sadece 4 olacak). Diziinizin büyüklüğünü değil * * işaretçisinin boyutunu kullanıyorsunuz. – WhozCraig
Günün bildirisinde “7” yi atlayın, daha sonra “sizeof (days)' use 'days-> length()' yerine kullanın. –