首页 > 解决方案 > 指向结构变量的指针的大小是多少?

问题描述

在这两种情况下,我都试图打印指针的大小。对于这两种情况,我都得到8 16了输出。

#include <stdio.h>

struct Book
{
    char name[10];
    int price;
};

int main(void)
{
    struct Book a;      // Single structure variable
    struct Book* ptr;   // Pointer of Structure type

    ptr = &a;

    struct Book b[10];  // Array of structure variables
    struct Book* p;     // Pointer of Structure type

    p = &b;

    printf("%ld %ld\n",sizeof(ptr),sizeof(*ptr));
    printf("%ld %ld\n",sizeof(p),sizeof(*p));

    return 0;
}

标签: cpointersoutputstructure

解决方案


首先,sizeof运算符产生一个类型size_t,您必须使用它%zu来打印它。

然后,通常在任何体系结构中,指针的大小始终是恒定的,与它们指向的类型无关。换句话说,指针需要保存一个内存位置,并且对于任何正常的架构,(内存位置的)地址具有固定大小。因此,任何指针的大小都是相同的。


推荐阅读