Я программировал с GCC некоторое время , но я решил начать работу с Visual Studio, потому что это удобно. В любом случае проблема заключается в том, что в Visual Studio динамические массивы действительно не работают , как в GCC, поэтому я использовал malloc.Динамические массивы Visual Studio в C
При печати 1-го присвоенного значения я получу правильный ответ. Однако следующие значения будут неправильными, второе значение всегда будет неправильным, третье значение будет неправильным, и я не могу понять, почему.
Например, при вставке 1,2,3 и попытаться напечатать 2-е место, он дает 5.
int main(void)
{
K1();
printf("%d\n", p1+1);
return 0;
]
С p1 [I] аварий программы. p1, является INT *
void K1(void)
{
int i;
printf("n1");
scanf_s("%d", &n1);
p1 = (int*)malloc(sizeof(int) * n1);
for(i=0;i<n1;i++)
{
scanf_s("%d", &p1 + i*sizeof(int));
}
}
Я не могу понять, в чем проблема.
Всегда проверяйте возвращаемые значения 'scanf' семейных функций. – user694733
Подумайте о '& p1 + i * sizeof (int)' Если вы указали указатель, почему нужно добавить его размер ....? – LPs
Это еще одна попытка, сначала это был просто malloc (n1) – s3v3ns