intmain(){// 空指针用于给指针变量进行初始化int* p =NULL;//空指针不可以进行访问// 空指针的地址为0, 0-255之间的内存编号是系统占用的,因此不可以访问// *p = 100; 访问空指针会报错return0;}
野指针
#include<iostream>usingnamespace std;intmain(){/*
野指针,指针只想非法的内存空间(没有申请的空间)
*/int* p =(int*)0x1100;return0;}
const 修饰指针
#include<iostream>usingnamespace std;intmain(){/*常量指针
指针指向的地址可以修改 p = &b;
指针指向地址的值不可以修改 *p = 20;会报错
*/int a =10, b =20;constint*p =&a;
p =&b;/*指针常量
指针指向的地址不可以修改 p = &b;
指针指向地址的值可以修改 *p = 20;会报错
*/int*const p =&a;/*const即修饰指针,又修饰常量
指针指向的地址不可以修改 p = &b;
指针指向地址的值不可以修改 *p = 20;会报错
*/constint*const p =&a;}
指针指向数组
#include<iostream>usingnamespace std;intmain(){// 指针指向数组int arr[10]={1,2,3,4,5,6,7,8,9,10};// 默认指向arr的首地址int*p = arr;// 让p指向数组的下一个地址,p指向的地址向后偏移4个或8个字节
p++;// 让p指向当前位置后的第二个地址
p = p +2;
cout <<*p << endl;return0;}
指针作为参数
#include<iostream>usingnamespace std;intsnow(int*a,int*b){return*a +*b;}intmain(){int a =10, b =20;int* p1 =&a;int* p2 =&b;
cout <<snow(p1, p2)<< endl;return0;}
指针配合函数使用
#include<iostream>usingnamespace std;voidsnow(int*arr){// 接收到数组for(int i =0; i<=9; i++){
arr[i]= arr[i]+1;
cout << arr[i];}
cout << endl;}intmain(){int arr[10]={1,2,3,4,5,6,7,8,9,10};// 将arr的首地址传递给函数snow(arr);for(int i =0; i <=9; i++){
cout << arr[i];}return0;}