Задать вопрос
Qubc
@Qubc
Ненавижу полисемию.

Передача массива в функцию?

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);//будет ошибкой! Почему?
}

Вот такие инструкции же работают...

printf ("%p\n", MAS] );
printf ("%p\n", &MAS );
printf ("%p\n", &MAS[0] );

scanf ("%d", MAS] );
scanf ("%d", &MAS );
scanf ("%d", &MAS[0] );
  • Вопрос задан
  • 400 просмотров
Подписаться 3 Простой 2 комментария
Ответ пользователя Алексей Лашко К ответам на вопрос (3)
@LASHKOAG
Си, Робототехника, Linux, Телеметрия, Разработчик
https://metanit.com/cpp/tutorial/4.5.php

#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;
}
Ответ написан
Комментировать