c - 指向结构变量的指针的大小是多少?
问题描述
在这两种情况下,我都试图打印指针的大小。对于这两种情况,我都得到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;
}
解决方案
首先,sizeof
运算符产生一个类型size_t
,您必须使用它%zu
来打印它。
然后,通常在任何体系结构中,指针的大小始终是恒定的,与它们指向的类型无关。换句话说,指针需要保存一个内存位置,并且对于任何正常的架构,(内存位置的)地址具有固定大小。因此,任何指针的大小都是相同的。
推荐阅读
- docker - 从 Docker Toolbox Container 访问 jupyter notebook 的问题
- angular - 在 Angular 中获取字节流时,下载链接未定义
- sql - 如何在 SQL Server 中将字符串转换为日期?
- python - 使用 timeit + exec 的奇怪行为
- android - 尝试创建应用程序包时出现 FileUsesReservedNameException
- javascript - 拆分多个字符的问题
- c# - 来自服务器的 Unity json 数据返回 null
- c# - Windows 服务访问拒绝路径 192.168.1.XX
- c++ - 链表的复制构造函数导致内存错误
- php - Doctrine - 查询字段日期比较