Как лучше инициализировать массив? - 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)); }
Объяснение кода листинга программы
- Объявляется указатель на unsigned int
servo_position
. - В функции
servo_on
объявляется статический массивa
размером 4 элемента с начальным значением 1382. - Выделяется память под массив
servo_position
с помощьюcalloc
размером 4 элемента. - С помощью
memcpy
содержимое массиваa
копируется в выделенную память массиваservo_position
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д