函數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