为什么此代码使用& (*p)[i]
?
typedef void* sir;
int main(){
sir *p;
int x[10],i;
for(i = 0;i < 10;i++)
x[i] = i;
p = &x;
for(i = 0;i < 10;i++)
printf("%d ",&(*p)[i]);
return 0;
}
答案 0 :(得分:2)
您输入 $pieces = explode(".", $element);
$al = sizeof($pieces);
if ($pieces[$al-1] == ".mp3") {
$arraymp3[] = $element;
}
作为sir
,因此当您撰写void *
时,您声明sir *p
属于p
类型,双重无效指针。尝试将void**
声明为p
,并打印数组的元素,使用以下内容:
sir p
注意:在这种情况下,如果没有相应类型的转换,#include <stdio.h>
#include <stdlib.h>
typedef void* sir;
int main(void)
{
sir p;
int x[10], i;
for (i = 0; i < 10; i++)
x[i] = i;
p = &x;
for (i = 0; i < 10; i++)
printf("%d ", *((int *)p + i));
return 0;
}
,则无法取消引用void指针。对于void指针,也不允许使用指针算法。
要打印数组元素的地址而不是元素本身,请使用:
int