В следующей программе С:просчет размера массива внутри функции
int doStuff(int afm[]);
int main(){
int afm1[9] = {1,2,3,4,5,6,7,8,9}; //size=9
int afmLength = sizeof(afm1)/sizeof(int);
printf("main: Length Of Array=%d\n", afmLength); //9 OK
int k = doStuff(afm1);
system("PAUSE");
return 0;
}
int doStuff(int afm[]){
int afmLength = sizeof(afm)/sizeof(int);
printf("doStuff: Length Of Array=%d\n", afmLength); //1 WRONG
return 1;
}
производит следующий вывод:
main: Length Of Array=9
doStuff: Length Of Array=1
Почему размер массива вычисляется правильно в основном, но не так внутри функции ?
Спасибо Давиду. Что я должен писать вместо этого? – athspk
Ответ Арготе говорит вам. Функция 'doStuff' не имеет информации о длине массива. Вам нужно будет передать эту информацию в функцию вместе с указателем на массив. –