int i = 5;
int* i_pointer = &i;
*&i,&*i_pointer,*&i_pointer 的值各是什么呢?
*和&是同优先级运算符,自右至左结合。
&是取地址运算;
*是取地址的本身;
知道了上述内容,就不难知道上面的问题了。
*&i,&i取i地址,*(&i)取地址的本身,那就是等于i本身了。
&*i_pointer,*i_pointer取地址的本身,那就是i了,&(*i_pointer)就等于&i了,也一样等于i_pointer。
*&i_pointer,&i_pointer取i_pointer地址,*(&i_pointer)取地址的本身,那就等于i_pointer了。
通过下面代码证明上述内容
int i = 5;
int* i_pointer = &i;
//i本身
cout << i << endl;
cout << *i_pointer << endl;
cout << *&i << endl;
//i的地址
cout << &i << endl;
cout << i_pointer << endl;
cout << &*i_pointer << endl;
//指针自身地址
cout << &i_pointer << endl;
//指针本身
cout << *&i_pointer << endl;
5
5
5
0022FE6C
0022FE6C
0022FE6C
0022FE60
0022FE6C