我对元素指针指向的大小有些困惑。包括一些可视化的基本代码。

uint8_t var1;
uint8_t var2;

uint8_t *p[2]={&var1,&var2};


sizeof(* p)的结果是4而不是1,为什么呢?

uint8_t var1;
uint8_t *p=&var1;


在此代码结果中,正确的sizeof(* p)为1。

我想念的是什么?

最佳答案

请注意,数组p会衰减为一个指针,并且由于该数组本身就是一个指针数组,所以它也是一个指针。

#include <stdio.h>

int main(void)
{
    char var1;
    char var2;
    char *p[2] = { &var1, &var2 };
    printf("%zu\n", sizeof(*p));    // size of each element
    printf("%zu\n", sizeof(**p));   // size of dereferenced element
    return 0;
}


程序输出
4
1个

关于c - 对象指针的sizeof指向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55551516/

10-13 05:04