第80课 穿越时空
穿越时空(指针、指针运算)

深入理解指针,根据对指针进行各项操作观察其中值的变化,探索指针的每项操作背后的逻辑和结果。
穿越时空

运行程序:
(1)int year1=2023,year2=2022声明了两个整数类型的变量year1=2023和year2=2022。
(2)int*p1,*p2,*p声明了3个指针变量p1,p2,p。
(3)int num声明了一个整数类型的变量num。
(4)p1=&year1将指针变量p1指向变量year1的存储地址,p2=&year2将指针变量p2指向变量year2的存储地址。此时p1与year1关联,p2与year2关联。
(5)第一次输出cout<<*p1<<""<<*p2<<endl。

(6)指针变量存储的地址进行交换。
p=p1; p1=p2; p2=p;
p1→&year1
p2→&year2
↓交换后
p1→&year2
p2→&year1
地址交换,变量year1和year2中存储的数据本身并没有交换
(7)第二次输出cout<<*p1<<""<<*p2<<endl,地址指向发生了变化。

(8)存储的数据没有改变,所以变量year1中的值还是2023,变量year2中的值还是2022。
cout<<year1<<""<<year2<<endl(9)交换存储内容。
num=*p1;*p1=*p2;*p2=num;此时内存中存放的内容发生了变化。
*p1从2022变成了2023
*p2从2023变成了2022
↓(同时)
year1从2023变成了2022
year2从2022变成了2023
巩固练习
(1)下面哪段代码表示指针赋值?()
A.
int a=12; int*p=&a; B.
*int p=3; C.
int num=3; int*p=num; D.
int num=3,*p; p=*num;(2)阅读下面的程序,填写程序的输出结果。

输出:_____________________________________________________________ _____
(3)阅读以下程序代码,填写程序的输出结果。

输出:_____________________________________________________________ _____