指针简介
指针的作用是可以通过指针间接访问内存
每创建一个变量,都对应着一个地址编号,我们获取这个变量的内容,可以通过访问其地址来实现,那么指针就是用于保存地址的
指针定义
我们如下定义指针
#include
using namespace std;
int main(){
//定义指针
int a = 10;
//定义指针语法,数据类型+*+指针变量名
int * p;
//让指针记录变量a的地址,&取地址符
p = &a;
cout<<"a的地址为: "<<&a<
我们通过*p来对a变量的内容进行修改,所以a输出为1000,而不是10
那么指针变量指向内存编号为0的空间称为0指针
#include
using namespace std;
int main(){
//空指针
int *p = NILL;
system("pause");
return 0;
}
空指针不能进行访问
野指针是指对某个指针指定地址,但是不能对其进行访问(没有申请地址)
#include
using namespace std;
int main(){
//野指针
int *p = (int *)0x1100;
cout<<*p<
修饰指针const,被修饰的指针或者常量就不可以进行修改
#include
using namespace std;
int main(){
//1.修饰指针
int a = 10;
const int *p = &a;
*p = 20;//报错
//2.修饰常量
int * const p = &a;
*p = 200;
//3. 修饰指针常量
const int * const p = &a;
*p = 200;//报错
system("pause");
return 0;
}
指针数组
#include
using namespace std;
int main(){
int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
//访问第一个元素
int *p = arr;
cout<<"第一个元素: "<<*p<
指针函数
#include
using namespace std;
void swap01(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
void swap02(int *p1, int *p2 )
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(){
int a = 10;
int b = 20;
swap01(a , b);
cout<<"a= "<
地址传递可以改变实参数值,其原理是内存地址发生了改变
若不想改变实参,采用值传递,若想改变曾用地址传递