指针的大小legend

指针的大小:


#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个字节.


(2)
今天看视频讲到指针变量所占字节的问题,开始觉得很简单,听后觉得自己学的还真是肤浅啊,以前都没有想过这种问题。


1.无论指针变量指向任何类型的变量它所占字节都是4个字节。因为指针只保存变量的首字节的地址。


在32位操作系统中,CPU地址总线为32,一个地址总线有两种状态:1和0,所以最高就是2^32次方,一个内存地址的标号就要用4个字节(32位)来存储。最小的内存地址就是32个0,最大的地址就是32个1。


所以无论指针指向的是什么类型的变量,只要能够保存下该变量的首地址就可以根据变量类型来找到指定的变量了


(3)
#include <iostream>
#include"stdio.h"
using namespace std;


int  fun(int  a[3])
{
return sizeof(a);
}
// 等价于 int fun(int *a)




int main()
{
      int b[3];
      cout<<sizeof(b);
      cout<<endl<<fun(b)<<endl;
    cout << "Hello world!" << endl;
    return 0;
}
结果为12,4
注意:数组作为参数时,与指针作为参数其实是一样的。
指针与数组名的关系:
都是地址,但是指针是变量,可以移动,数组名是常量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值