一个关于指针的大小

来源:百度知道 编辑:UC知道 时间:2024/05/28 23:06:57
#include<iostream>
#include<string>
using namespace std;

void main()
{
double a[]={1,2,3};
double *x =a;
cout<<sizeof(a)<<endl;
cout<<sizeof(x)<<endl;
}

运行结果是:
24
4

请问这个“4”是什么的大小?指针?

是指针变量占用内存的大小(字节数).
在32位机上,所有指针类型变量占用内存字节数都为4
因为32位机就是 4字节 * 8个二进制位/字节 计算出来的.
如果在64位机上,指针占用内存大小就是:
8个字节.

电脑处理器的位数,是表达了处理器的地址编码有多少个位。仅仅表达了寻址能力。
32位电脑,它告诉我们,地址有32个位,如果你想保存这个地址,需要使用32个位的空间来保存,就是4个字节。
double *x =a; //x这个变量的值,是一个地址。不管它指向什么类型的变量,地址只是一个变量存放的地址(指针)而已,地址是CPU统一编址的。CPU位数告诉你这个地址有多长。
cout<<sizeof(x)<<endl;输出CPU地址的编码长度,你是32位CPU,输出地址就是32位的,需要4个字节。因此sizeof输出4.