Ann*_*Ann 5 c arrays pointers void
我有一个返回void指针的函数.让我们说我知道指向的数据块是一个int数组.我该如何打印?
从另一个线程我看到我以这种方式将void转换为我想要的数据类型:
printf("%i",*((int*)data));
Run Code Online (Sandbox Code Playgroud)
但就像我说的那样,数据是一组整数.我试图这样做,但它不是一个有效的表达式:
for(i = 0; i<3; i++){
printf("%i \n", *((int*)(data+sizeof(int)*i)));
}
Run Code Online (Sandbox Code Playgroud)
什么是正确的打印方式?
只需使用临时的int*:
int *p = data;
for (int i=0; i<3; i++)
printf("%i\n", p[i]);
Run Code Online (Sandbox Code Playgroud)
请注意,第一行中没有显void*式强制转换,因为不需要并且避免显式强制转换被视为良好的C样式.在循环中,我已经使用了这样一个事实:你可以索引到一个指向数组的指针,就像它是数组本身一样.