地址运算问题,求助
#include <stdio.h>
#include <iostream>
using namespace std;
void process_keys12 (int * a1, int * a2) {
cout<<"//////////////////process-before"<<endl;
cout<<"a1=="<<a1<<endl;
cout<<"*a1=="<<*a1<<endl;
cout<<"a1 + *a1==="<<a1 + *a1<<endl;
cout<<"(int *) (a1 + *a1)==="<<(int *) (a1 + *a1)<<endl;
cout<<"*((int *) (a1 + *a1))==="<<*((int *) (a1 + *a1))<<endl;
cout<<"*a2=="<<*a2<<endl;
cout<<"a2=="<<a2<<endl;
*((int *) (a1 + *a1)) = *a2;
cout<<"//////////////////process-after"<<endl;
cout<<"*a1=="<<*a1<<endl;
cout<<"a1=="<<a1<<endl;
cout<<"a1 + *a1=="<<a1 + *a1<<endl;
cout<<"(int *) (a1 + *a1)=="<<(int *) (a1 + *a1)<<endl;
cout<<"*((int *) (a1 + *a1)=="<<*((int *) (a1 + *a1))<<endl;
cout<<"*a2=="<<*a2<<endl;
cout<<"a2=="<<a2<<endl;
}
int main()
{
cout<<"//////////////////main"<<endl;
int key1=0;
int key2=10;
int * p1=&key1;
int *p2=&key2;
cout<< key1<<endl<<key2<<endl<<p1<<endl<<p2<<endl;
process_keys12(p1,p2);
cout<<"//////////////////main"<<endl;
cout<< key1<<endl<<key2<<endl<<p1<<endl<<p2;
system("PAUSE");
return 0;
}
能不能说下函数process_key12的运算过程啊~~~当key1,key2值有变的时候,总有很奇怪的变化!谁能帮忙解释下
[解决办法]
void process_keys12 (int * a1, int * a2) {
cout < <"//////////////////process-before" < <endl;
cout < <"a1==" < <a1 < <endl; key1地址
cout < <"*a1==" < <*a1 < <endl; key1
cout < <"a1 + *a1===" < <a1 + *a1 < <endl; key1的地址+sizeof int * key1
cout < <"(int *) (a1 + *a1)===" < <(int *) (a1 + *a1) < <endl; 还是 key1的地址+sizeof int * key1
cout < <"*((int *) (a1 + *a1))===" < <*((int *) (a1 + *a1)) < <endl; key1的地址+sizeof int * key1 的值 这里key1为0,所以为key1的值
cout < <"*a2==" < <*a2 < <endl;
cout < <"a2==" < <a2 < <endl;
*((int *) (a1 + *a1)) = *a2; 将key1改为10
cout < <"//////////////////process-after" < <endl;
cout < <"*a1==" < <*a1 < <endl; 与前面一样
cout < <"a1==" < <a1 < <endl; 与前面一样,key1的新值
cout < <"a1 + *a1==" < <a1 + *a1 < <endl; key1的地址+sizeof int * key1
cout < <"(int *) (a1 + *a1)==" < <(int *) (a1 + *a1) < <endl; 与前面一样
cout < <"*((int *) (a1 + *a1)==" < <*((int *) (a1 + *a1)) < <endl; 这是一个随机值
cout < <"*a2==" < <*a2 < <endl;
cout < <"a2==" < <a2 < <endl;
}
[解决办法]
分清楚两点:
指针变化,还是 指针指向的值变化