取值运算符*和所在运算符&

[复制链接]
发表于 昨天 18:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在指针的学习中,必不可少的两个操纵符:*和&。
在界说一个指针的时间,比如
short *p;
体现一个指向short数据范例的指针,具体表达的意思就是这个指针P指向的一个数据范例是short范例,也就是说操纵的这个数据是个short范例数据。“*”体现的取值运算符,就是要获取指针指向的内存所在内里的数据。
p本身是一个内存所在值,通常说的指向某个所在,就是体现P的值就是这个所在,通过取值运算符(*),才气获取指向这个内存内里的数据值。
比方现在界说一个数组
unsigned char data[] = {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80};
数据在内存分列方式如下(小端模式):
                        0x10
                       
                        0x20
                       
                        0x30
                       
                        0x40
                       
                        0x50
                       
                        0x60
                       
                        0x70
                       
                        0x80
                       


  • 如果界说一个short范例(16位)指针
short *p = data;
printf("output value: %x\n", *p);
则打印输出为:
output value: 0x2010

  • 如果界说一个long范例(32位)指针
long *p = data;
printf("output value: %x\n", *p);
则打印输出为:
output value: 0x40302010
可以看出,指针P指向的内存所在都是同一个,但是随着指针指向的数据范例差别,通过取值运算符(*)获取的值也是差别的。
在数组data中,如果我想界说一个指针,指向第5个所在,就必要所在运算符
short *p = &data[4];
这个时间,指针P就直接指向data[4]这个数据的所在。
指针P是指向一个所在,那么怎样获取一个变量的所在,就是靠所在运算符(&)。
总结起来,
取值运算符(*)体现获取这个指针指向的所在内里的数据值,
所在运算符(&)体现获取这个变量在内存的所在。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表