函数func
需要void参数buf
。我想通过调用func
将1到10的值插入buf
。但是,的地址在func
和main
中有所不同,打印的值不是从1到10.有谁能帮我解决这个问题吗?谢谢!具有void参数的c函数
void func(int n, void *buf);
int main()
{
void *buf;
func(10,buf);
for(int i=0;i<10;i++){
printf("%d\n", ((char*)buf)[i]);
}
printf("in main, after func: %p\n",buf);
}
void func(int n, void *buf)
{
(char*)buf;
char my_array[n];
for(int i=0;i<n;i++){
my_array[i]=i;
}
buf = my_array;
printf("in func: %p\n",buf);
}
“函数func需要void参数buf” - 不,它不会! 'buf'是一个'void *',而不是'void'(不管那会是什么)。而你的'main'签名应该是'int main(void)'。你为什么让你的编译器不能帮助你?如果没有必要,请不要使用'void *'。演员阵容也一样。编写类型安全的代码,其他任何事情都是维护的噩梦。 – Olaf