c++ - 指针大小(*variable VS 变量)
问题描述
根据我的理解,在 32 位机器上,指针 sizeof 是 32 位(4 个字节),而在 64 位机器上它是 8 个字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大小时,我得到 4 。为什么呢 ?打印变量和打印*变量有什么区别。
int *name = NULL;
int *add = NULL;
cout<< sizeof (*name) << endl; // Prints 4
cout << sizeof (add); //Prints 8
解决方案
*
运算符取消引用一个指针。换句话说,它给了你它所指向的东西。
name
有类型int *
,所以*name
有类型int
。这意味着sizeof(*name)
与 相同sizeof(int)
,在您的系统上是 4。
同样,add
有 type int *
。这意味着sizeof(add)
与 相同sizeof(int *)
,在您的系统上是 8。
推荐阅读
- text - 具有自定义或系统字体大小的文本(以及如何获取该数字) - SwiftUI
- javascript - 分组对象数组/将对象正确添加到数组中 - JS
- output - 一次输出数组的每个元素的传统方法是什么?
- git - 在 Git 中创建别名的正确方法是什么?
- python - 如何查看列表是否包含与 python 中的另一个列表共有的对象?
- asp.net-mvc-4 - 索引数据库循环遍历表数据并将其发送到服务器
- email - 添加转发过滤器时未验证电子邮件地址 (AWS SES)
- php - 如何在 Laravel 中编辑和更新复选框值?
- javascript - 如何在卡片中模拟 Airbnb 风格的滑块?
- spring - Spring Junit 测试中的模拟类变量显示 Null