#c #arrays #malloc
#c #массивы #malloc
Вопрос:
#include <stdio.h>
#include <ctype.h>
void spyral(int boyut)
{
int i;
int*a = malloc(boyut * sizeof(int*));
for (i = 0; i < boyut; i )
{
a[i] = i 1; //program is erroring here
}
for (i = 0; i < boyut; i )
{
printf("%d", a[i]);
}
/*int x = 5;
int y = 5;
int** a = malloc(x * sizeof(int*));
for (int i = 0; i < y; i ) {
a[i] = malloc(sizeof(int*) * y);
}*/
}
int main()
{
spyral(6);
}
Я хочу отправить переменную в функцию из main, этот код не работает в Visual studio, но это работает на dev-c . Я хочу работать в Visual Studio, в чем проблема?
Комментарии:
1. Массив указателей не является указателем на массив.
2.
boyut * sizeof(int*)
должно бытьboyut * sizeof(int)
. Вы пытаетесь выделить место для 6 целых чисел.3. Единственная проблема, которую я вижу, это то, что
#include <stdlib.h>
отсутствует.4. Это означает то же самое, что и в
int*a
. Когда вы это делаетеsizeof (int)
, вы запрашиваете размер переменной типаint
. Когда вы это делаетеsizeof (int *)
, вы запрашиваете размер переменной типа, на которую указан указательint
.5. Если включение
<stdlib.h>
исправило вашу проблему, вы также должны были получать жалобы от компилятораa = malloc(...)
. Что-то об инициализации указателя из целого числа. Не игнорируйте предупреждения компилятора.