#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p, n, i;
printf("Enter the size of the array:");
scanf("%d", &n);
p = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; i++)
{
printf("\n Enter element %d:", i + 1);
scanf("%d", &p[i]);
}
for (i = 0; i < n; i++)
printf("\n %d", p[i]);
return 0;
}
Зачем нам нужно писать &
в scanf, если это массив, в этом нет необходимости? p
- указатель на все области памяти, поэтому &p[i]
должен указывать адрес указателя, но не там, где мы хотим сохранить данные правильно? Также, если мы напишем *p[i]
в printf
, он дает ошибку, p
- это указатель, поэтому мы должны уважать его и хранить данные в зарезервированном пространстве в памяти, но он не работает? Даже если я скомпилирую вышеуказанную программу, так как она перестает работать после ввода 3 значений в качестве входных данных.Распределение памяти C (malloc)
[Не выдавать результат malloc] (http://stackoverflow.com/q/605845/296974). – glglgl
Каков точный ввод, который вы даете программе? Каковы точные результаты, которые вы получаете? –
«' p' - это указатель, поэтому мы должны его уважать ». Мы делаем это, используя' p [i] ', который является таким же, как' * (p + i) '. – glglgl