首页 > 解决方案 > 以下代码中 sizeof(*ptr) 和 sizeof(ptr) 有什么区别?

问题描述

我正在研究 C++ 中的指针。在下面的代码中,我有一个指向 int 的指针。我无法理解 sizeof(*ptr) 和 sizeof(ptr) 之间的区别是什么?我同意 sizeof(*ptr) 是 4 个字节,但为什么 sizeof(ptr) 是 8 个字节?

#include<iostream>
using namespace std;
int main(){
    int num = 10;
    int *ptr;
    ptr = &num;
    cout<<sizeof(*ptr)<<endl;
    cout<<sizeof(ptr)<<endl;
    return 0;
}

这是输出:

saurabh@saurabh-inspiron:~/Code/Project$ ./p 
4
8

标签: c++pointers

解决方案


如果ptr是指向 a 的指针int,那么*ptr它指向int

您正在显示在您的系统上, anint4 bytes,而指针是8 bytes


推荐阅读