马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在指针的学习中,必不可少的两个操纵符:*和&。
在界说一个指针的时间,比如
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 *p = data;
printf("output value: %x\n", *p);
则打印输出为:
output value: 0x2010
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企服之家,中国第一个企服评测及商务社交产业平台。
|