将char*转为void**的问题,代码编译后却无法使用。

问题描述 投票:0回答:1

我是第一次在C语言中使用通用类型,我的代码出现了一些问题。我的编译器可以工作,但当我运行我的程序时,它打印出奇怪的字符。

我有一个函数库,可以在通用类型的数组上工作(插入和快速排序),我想测试我的库。

我用这个小例子总结了我的代码,所以你不必阅读我的全部代码。char_function是我想测试的通用函数,在我的main中,我已经做了测试。我希望得到这样的输出。

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];
}
c pointers generics
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.