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 }
原文:https://www.cnblogs.com/ManagerYue/p/12667194.html