Как лучше инициализировать массив? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как лучше инициализировать массив?
unsigned int *servo_position;
void servo_on(void)
{
servo_position=(unsigned int*)calloc(9,sizeof(unsigned int));
servo_position[]={1382, 1382, 1382, 4565};//Так компилятору не нравится
}
Вот так не очень краиво
unsigned int *servo_position;
void servo_on(void)
{
servo_position=(unsigned int*)calloc(9,sizeof(unsigned int));
servo_position[0]=1382;
servo_position[1]=1382;
servo_position[2]=1382;
servo_position[3]=4565;
}
Или вот так?
unsigned int *servo_position;
void servo_on(void)
{
char i;
unsigned int a[4]={1382, 1382, 1382, 4565};
servo_position=(unsigned int*)calloc(9,sizeof(unsigned int));
for (i=0;i<9;i++)
{servo_position[i]=a[i];}
}

Решение задачи: «Как лучше инициализировать массив?»

textual
Листинг программы
unsigned int *servo_position;
 
void servo_on(void)
{
    static const unsigned int a[4] = {1382, 1382, 1382, 4565};
    servo_position = calloc(4, sizeof(unsigned int)); // Откуда ты там взял 9?
    memcpy(servo_position, a, 4 * sizeof(unsigned int));
}

Объяснение кода листинга программы

  1. Объявляется указатель на unsigned int servo_position.
  2. В функции servo_on объявляется статический массив a размером 4 элемента с начальным значением 1382.
  3. Выделяется память под массив servo_position с помощью calloc размером 4 элемента.
  4. С помощью memcpy содержимое массива a копируется в выделенную память массива servo_position.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы