如何使用void *?

时间:2016-03-04 09:49:29

标签: c pointers dynamic-arrays

为什么此代码使用& (*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;
}

1 个答案:

答案 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