1 #include<iostream>
2
3 using namespace std;
4
5 void swap(int*p1,int*p2)
6 {
7 int temp=*p1;
8 *p1=*p2;
9 *p2=temp;
10 cout<<"函数内x: "<<*p1<<endl;
11 cout<<"函数内y: "<<*p2<<endl;
12 }
13
14 int main()
15 {
16 //创建变量a
17 int a=10;
18 //创建指针p
19 int* p;
20 //p指向a
21 p=&a;//也可以直接:int* p=&a;
22 //访问指针
23 cout<<p<<endl;
24 //访问指针所指的变量
25 cout<<*p<<endl;//"*"代表解引用
26 *p=1000;//解引用也可用于修改所指变量的值
27 cout<<"a="<<a<<endl;
28 cout<<"a="<<*p<<endl;
29 //空指针
30 int* o=NULL;
31 //空指针不可访问和解引用(高危)
32 //cout<<*o<<endl;
33 //*o=100;
34 //野指针(是一个错误)
35 int* i=(int*)0x1100;
36 //cout<<*i<<endl;
37 //总结:空指针和野指针都不是我们申请的空间,所以不要访问
38
39 //常量指针
40 //常量指针可以改变所指变量,不可以修改所指变量的值
41 int b=20;
42 const int* j=&b;
43 //*j=200;-----错误
44 j=&a;
45 cout<<*j<<endl;
46 //指针常量
47 //指针常量可以修改所指变量的值,不可以改变所指变量
48 int* const k=&b;
49 *k=200;
50 //k=&a;-------错误
51 cout<<*k<<endl;
52 //既不可修改所指变量的值,又不可改变所指变量
53 const int* const l=&b;
54 //*l=2000;----错误
55 //l=&a;-------错误
56 cout<<*l<<endl;
57 system("cls");
58
59 //使用指针遍历数组
60 int arr[10]={1,2,3,4,5,6,7,8,9,10};
61 int*p1=arr;
62 cout<<*p1<<endl;
63
64 for(int i=0;i<10;i++)
65 {
66 cout<<*p1<<endl;
67 p1++;
68 }
69 //使用指针进行函数地址传递
70 int x=10;
71 int y=20;
72 swap(&x,&y);
73 cout<<"函数外x: "<<x<<endl;
74 cout<<"函数外y: "<<y<<endl;
75 return 0;
76 }