Sizeof 运算符未在 C 中给出正确的指针大小

问题描述

我创建了一个包含 3 个整数成员和一个指针变量 ptr 的结构

 ptr=(struct node*)calloc(15,sizeof(struct node*));
  printf("%ld",sizeof(ptr));

然而,使用 sizeof 运算符来获取 ptr 的大小会打印小于 15(即 8)的大小。 如果不正确,应该怎么做才能获取指针变量的大小。

解决方法

您得到的结果完全符合预期。
实际上,sizeof(ptr) 返回指针的大小,这取决于您的处理器架构(因为它返回 8,您很可能在 64 位处理器上)。

,

指针的大小将取决于您的硬件...指针在内存中存储一​​个地址,该地址表示您正在分配的那个东西的开始。它有多大并不重要:它的初始地址将与任何其他变量具有相同的字节数。

ptr=(struct node*)calloc(15,sizeof(struct node*)); 为 15 个指针分配空间,而不是 15 个结构,您可能想要删除 sizeof 中的 *

修复后,您可以添加两行以查看差异:

printf("size of a pointer to node* is: %d\n",sizeof(ptr));
printf("size of a struct pointed by a node* is :%d\n",sizeof(*ptr));

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...