问题描述
我创建了一个包含 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));