指针与引用、指针与数组(一)
程序员文章站
2023-12-25 22:50:51
...
一、 指针与引用
首先 int a =10;在a的地址上存的是10
int &b = a; 引用:把a的地址取别名为b;所以a与b的地址相同,存的都是10
int *c =a; 指针:在c的地址上存的是a的地址。
直接打印c则为a的地址
&表示取地址符。所以打印&c则为c的地址
*c表示在c上存储的地址所指向的值,所以打印 *c则为10;
int a =10;
int &b = a;
int *c = a;
cout << a << endl; // 为10
cout << &a << endl; //为00B5F7CC
cout << b << endl; // 为10
cout << &b << endl;//为00B5F7CC
cout << c << endl;//为00B5F7CC
cout << &c << endl;//为00B5F7B4
cout << *c << endl;//为10
二、 指针与数组
int a[10]; 定义一个数组 :
int *b = a;定义一个指针:把a数组的首地址存到b中,及与 int *b = &a[0]相同
另外,此时b[0]的地址与a[0]的地址相同,b[1]的地址与a[1]的地址相同,后面的以此类推。
int a[];
int *b = a;
*b = 10;//与a[0]=10相同, 与b[0]=10相同
*(b+1) = 20; //与a[1]=20 相同,与b[1]=20相同
a[2] =30; //与*(b+2)=20相同,b[2]=30相同
b[3] =40; //与a[3] = 40相同,与*(b+3)=40 相同
cout << a[0] << endl; //得10
cout << *b << endl;//得10
cout << b[1] << end;//得10
cout << &a[0] << endl;//00B5F8F4
cout << &b[0] << endl;//00B5F8F4
cout << a[1] << endl; //得20
cout << *(b+1) << endl; //得20
cout << b[1] << endl;//得20
cout << &a[1] << endl;//00B5F8F8
cout << &b[1] << endl;//00B5F8F8
cout << a[2] << endl; //得30
cout << *(b+2) << endl; //得30
cout << b[2] << endl; //得30
cout << &a[2] << endl;
cout << &b[2] << endl;