|
/**************************************
帅得不敢出门
2008.5.23
若有问题 望赐教
**************************************/
#include<iostream> using namespace std;
int main() { int *p = new int[5]; int *tp = p; for (int j=0; j<5; ++j) { p[j] = j; } cout << &tp << endl;//存放指针tp所在空间的地址不同于下面 cout << &p <<endl;//存放指针p所在空间的地址 cout << p <<endl;//申请的数组的首个元素所在空间的地址,不同于上面 cout << &(*(p+1))<<endl;//下一个元素所在地址 cout << p+1 << endl;//同上 cout << p+2 <<endl; for(int i = 0 ;i < 5 ;i++) { cout << p <<endl;
//如果是cout << &p << endl; 那么将永远是一个不变的值
//如果是&p的话,存放指针p所在空间的地址是不变的,所以你后面p++也没用,
//因为&p是不变的 p++; } p -= 5;//Either do it or take a problem delete[] p;// Don't forget to delete[]
int test[5] = {1,2,3,4,5}; int *t = test; cout<<"\n" << &t <<endl;//存放指针t的地址 cout<< t <<endl;//申请的数组的首个元素所在空间的地址
//cout<< &test <<endl;//以整个数组为单位取其地址
//cout<< &test+1 <<endl;//&test+sizeof(test) cout<< &t+1 << endl;//&t+4 存放指针t空间的下一个空间的地址
cout<< &(*(t+1))<<endl; cout<< t+1 << endl; cout<< t+2 <<endl; for(int k = 0 ;k < 5 ;k++) { cout << t <<endl; t++; }
//如果是字符数组的话又不同了 char testa[5] = {'1','2','3','4','\0'}; char *ta = testa; cout<<"\n" << &ta <<endl;//这里同上 cout<< ta <<endl;//此处输出的是整个字符数组 cout<< &ta+1 << endl;//存放指针ta空间的下一个空间的地址
cout<< &(*(ta+1))<<endl;//输出除首元素之外的字符 cout<< ta+1 << endl;//同上 cout<< ta+2 <<endl; for(int m = 0 ; m < 4 ;m++) { cout << ta <<endl; ta++; }
cout << &testa << endl;//以整个数组为单位取其地址 cout << &testa+1 << endl;//&testa+sizeof(testa)
return 0; }
|