将指针数组分配给void typecast指针如何工作?

时间:2019-10-25 21:33:03

标签: c arrays pointers casting

我试图了解第3行中发生的情况。

pos的结构是什么。我知道从第3行中删除( void *)使其成为type int*int (*)[2]的赋值,并且数组不能直接复制。那么打字在这里做什么呢?

    int a[] = {1,5,-3};
    int * p = &a[0];
    int (*pos)[2] = ( void *)p;
    printf("%d \n",(pos[0][0])); //prints 1
    printf("%d \n",(pos[0][1])); //prints 5
    printf("%d \n",(pos[1][0])); //prints -3
    printf("%d \n",(pos[1][1])); //prints garbage

0 个答案:

没有答案