Kritika Choudhary Ответов: 2

Почему компилятор не показывает ошибку для меток*, используемых в качестве меток[I]?


#включить <stdio.h>
тап_п()
{
int *метки;
printf("введите четыре метки:");
for(int i = 0;i<4;i++)
scanf("%d",&marks[i]);
printf("введенные вами метки являются:");
for(int i=0;i<4;i++)
printf("%d ",метки[i]);
возвращает 0;
}

Что я уже пробовал:

Программа не давала никаких выходных данных и не показывала никаких ошибок

2 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
Почему компилятор не показывает ошибку для меток*, используемых в качестве меток[I]?

Потому что определение языка говорит, что имя массива является указателем на первый элемент. Так marks это и указатель, и массив одновременно; использование доступно в любом случае, когда вы его объявляете.
int arr[10];
int i1 = arr[0];
int i2 = *arr;
Все ли действительно, как есть:
int *arr = (int*) malloc(40);
int i1 = arr[0];
int i2 = *arr;


CPallini

5.

Рейтинг:
1

W∴ Balboos, GHB

Вы заявили:
int *метки;

Вы не выделили для него никакой памяти.   Вам немного повезло, что ваше приложение не просто рухнуло.

Что-то вроде
marks = (int *)malloc(4*sizeof(int));



CPallini

5.