Просто базовая программа, написанная новичком. Предполагается прочитать значения в динамический массив, а затем распечатать их в обратном порядке. Вы не можете вводить размер массива заранее, размер массива будет корректироваться до тех пор, пока входные данные не будут заканчиваться символами.
Я думаю, что я написал все в порядке, но есть ошибки в разыменовании указателей и когда я запускаюэто в VS, он даже не будет регистрировать входы. При попытке в другом компиляторе он регистрирует входные данные, но не заканчивается на «-1».
Думая об этом, просматривая его, я не замечаю своей ошибки, надеюсь, вы поможете мне.
Редактировать: спасибо за указание точки с запятой через некоторое время, но теперь это «ошибка повреждения кучи» после ввода 2 или 3 входов. Что пошло не так?
int i=0;
int *p, *a;
int n=1;
p = (int*)malloc(n * sizeof(int));
printf("Enter integers here, and input -1 when done:\n");
while (p[i] != -1);
{
scanf_s("%d", &p[i]);
n = i + 1;
a= (int*)malloc(n * sizeof(int));
for (int j = 0; j < n; ++j)
{
a[j] = p[j];
}
free(p);
p = NULL;
p= (int*)malloc(n * sizeof(int));
for (int k = 0; k < n; ++k)
{
p[k] = a[k];
}
free(a);
a = NULL;
++i;
}
--i;
if (i <= 0)
{
printf("%d", p[i]);
--i;
}
free(p);
p = NULL;