指针变量与变量地址

26 篇文章 0 订阅
17 篇文章 1 订阅

一、基本概念

   存储单元一般应具有存储数据和读写数据的功能,以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。存储地址一般用十六进制数表示,而每一个存储器地址中又存放着一组二进制(或十六进制)表示的数,通常称为该地址的内容。 

    变量有三个要素是:变量名、变量类型、变量值。

    变量代表了一个存储单元,其中的值是可变的,故称为变量。


二、指针说明  

    一说到指针的大小很多人都会想到int型,char型,double型,然后觉得不同类型的指针所占内存大小不同,其实这是一种误区. 指针其实就是一个形无符号整型,一个整数而已,它的大小取决于你的系统是16 32 还是64位的 16/8=2byte 32/8=4byte 64/8=8byte .

    指针所指向的内存块所占内存大小.char占一个字节,int占2个字节,double占4个字节,long double占8个字节(这是默认的32位编译环境下,在64位下翻倍就是了),所以一个char所占内存为4个字节(32位下),所指向的内存区域占1个字节.同理其它类型也是一样的, 

    操作符:&、*

&:通过变量取地址。

*:通过地址取值。


三、具体分析

1、普通变量:

int n = 64;
	cout << endl << "Adderse_&n:" << &n << endl << "    " << "Data_n:" << n << endl << endl;

    普通变量变量名即地址中的数据(变量值)。

    存在一个地址:&n(表示唯一)。

    简单理解:普通变量名=数据。


2、一级指针变量:

int *a = &n;
	cout << endl << "Adderse_&a:" << &a << endl << "    " << "Adderse_a:" << a << endl << "    "
		<< "Adderse_&(*a):" << &*a << endl << "    " << "Adderse_*(&a):" << *&a << endl << "Data_a:" << *a << endl << endl;

    一级指针变量:变量名a实际所指的内容为变量n的地址,即a=&n=&(*a)=*(&a);其中*a表示通过a中的内容(n的地址)取值即n。

    存在两个地址:&a(唯一表示)和a(表示不唯一,如上)。

    简单理解:指针变量名=地址-------->数据。


3、二级指针变量:

int **p;
	p = &a;
	cout << endl << "Adderse_&(*p):" << &(*p) << endl << "    " << "Adderse_*p:" << *p << endl << "    " << "Adderse_&p:" << &p << endl << "    " << "Adderse_p:" << p << endl << "    "<< "Adderse_&(**p):" << &(**p) << endl << "    " << "Adderse_**(&p):" << **(&p) << endl << "        " << "Data_**p:" << "    " << **p << endl << endl;
    二级指针变量:变量名p所指内容为一级指针的地址=&a=&(*p)=*(&p)=p,该地址(&(*p))中的内容是*p,其中*p中的内容为n的地址=&n=&(**p)=**(&p)=*p

(其中p=&a,a=&n)。

    存在三个地址:&p(表示唯一)、p(表示不唯一)、*p(表示不唯一)。

    简单理解:指针变量名=地址---------->地址------------>数据。

其中&(*)和*(&)相互抵消功能。

    运行结果:




  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HySmiley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值