c++---指针
指针的作用:
可以通过指针间接访问内存。
指针就是一个地址
定义指针
指针定义的语法:数据类型* 指针变量名
使用指针
int a=10;//定义变量 int * p;//定义指针 p=&a;//指针指向a的内存地址 cout<<*p<<endl;//*p表示解引用,找到指针指向的内存中的数据
指针所占内存空间大小
32位操作系统:4
64位:8
空指针和野指针
空指针:指针指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可访问的(0~255之前的内存编号是系统占用的,不可以访问)
野指针:指针变量指向非法的内存空间
int * p=(int *)0x1100;
避免出现野指针和空指针的情况
const修饰指针 ——常量指针
const int *p=&a;//常量指针
常量指针特点:指针的指向可以修改,但指针指向的值不可以改
int * const p = &a;//指针常量
指针常量特点:指针指向的值可以修改,指针的指向不可以修改
const int * const p = &a;
特点:值和地址都不可以修改
指针和数组
int arr[10]={0,1,2,3,4,5,6,7,8,9}; int *p=arr;//arr就是数组的首地址 cout<<"利用指针访问第一个元素:"<<*p<<endl; p++;//让指针向后偏移4个字节 cout<<"利用指针访问第二个元素:"<<*p<<endl;
指针和函数
值传递无法修改实参
地址传递可以修改实参
//地址传递 void Switch(int *a,int *b) { int temp=*a; *a=*b; *b=temp; } int main(){ int a=10; int b=20; Switch(&a,&b); cout<<a<<endl; cout<<b<<endl; system("pause"); }
浙公网安备 33010602011771号