Проблема с приведением char * к void ** код компилируется, но не работает - PullRequest
1 голос
/ 06 мая 2020

Я впервые работаю с общими типами c в C, и у меня возникли проблемы с моим кодом. Мой компилятор работает, но когда я запускаю свою программу, он печатает странные символы.

У меня есть библиотека с функциями, которая работает с типами c типов массивов (вставка и быстрая сортировка), и я хочу протестировать свою библиотеку.

Я резюмировал свой код этим небольшим примером, поэтому вам не нужно читать весь мой код. Char_function - это общая c функция, которую я хочу протестировать в этом случае, и в основном я тестирую. Я ожидаю такой результат:

b
c
c

Код:

#include <stdio.h>
#include <stdlib.h>

void generic_function(void** array);

int main(){
  char* ch= (char*)malloc(sizeof(char)*3);
  ch[0] = 'a';
  ch[1] = 'b';
  ch[2] = 'c';
  generic_function((void**)ch);
  printf("%c\n", ch[0]);
  printf("%c\n", ch[1]);
  printf("%c\n", ch[2]);
  return 0;
}

void generic_function(void** array){
  array[0] = array[1];
  array[1] = array[2];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...