void printMAS (int A[])
{
printf ("%d\n", A[1] );//не суть
}
int main (void)
{
int MAS[] = {0,1,2,3,4};
printMAS (MAS);//The name of the array evaluates to the address of the first element of the array.
printMAS (&MAS[0]);//не будет ошибкой!
printMAS (&MAS);//будет ошибкой! Почему?
}
printMAS (&MAS);//будет ошибкой! Почему?
&MAS
-- int (*)[5]
. Значение же адреса будет одним и тем же.Вот такие инструкции же работают...
...
и интерпретируется внутри как void *
, т.е. тип исходного адреса больше не имеет значения. #include <stdio.h>
void printMAS (int *, int); // это для компилятора или для "имя_файла.h"
void printMAS (int *ptrA, int countptrA){
//передаем массив по указателю и количество элементов
printf ("ptrA[1] = %d\n\n", ptrA[1] );//не суть
for (int i=0; i<countptrA; ++i){
printf ("ptrA[%d] = %d\n",i, ptrA[i] );
}
}
int main(){
int B[]={5,9,10,200,500};
printf ("(sizeof(B)/sizeof(B[0])) = %d\n\n", (sizeof(B)/sizeof(B[0])) );
printMAS(B,(sizeof(B)/sizeof(B[0])));
return 0;
}