我对元素指针指向的大小有些困惑。包括一些可视化的基本代码。
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/