指针常量(c++笔记)

精英怪
广告

指针

指针常量(c++笔记)

概念

指针是用来通过指针间接访问内存

可以理解为在公寓的门牌号可以知道住户信息

int a=10;

一个inc类型的变量为a,ta的存储了10的信息,目前如何通过地址拿到存储的10?

指针语法:

数据类型 * 指针变量名;

int *p;

定义指针

int a=10;

int *p;

p=&a;

//获得a的地址

cout<<"a地址为:"<<&a<<endl;

//指针p的地址:

cout<<“指针p的地址:”<<p<<endl;

2、使用指针

//可以通过解引用的方式来找到指针指向内存的数据

cout<<"p指向a内存的数据"<<*p<<endl;

*p=300;

//通过指针进行修改a的值

cout<<"a="<<a<<endl;

cout<<"* p="<<* p<<endl;

案例:

通过指针更改变量的值

int num=10; cout<<"num="<<&num<<endl; int *p=& num; cout<<"num="<<&num<<endl; cout<<"*p="<<* 星号P<<endl; *p=25; cout<<"num="<<&num<<endl;

指针所占的内存空间大小

在32位操作系统下,占用4个字节空间;64位下占8个字节空间

int a=10; int *p=&a; cout<<"sizeof(int *)“<<sizeof(p); cout<<"sizeof(int *)“<<sizeof(int *); cout<<"sizeof(int *)“<<sizeof(float *); cout<<"sizeof(int *)“<<sizeof(double *); cout<<"sizeof(int *)“<<sizeof(char *);

空指针

指针变量指向内存中编号为0的空间称为空指针

用法:初始化指针变量

注意:空指针指向的内存是不可以访问的

案例:

空指针用来给指针变量进行初始化;

int *p=NULL;

空指针不可以进行访问的

*P=12;//错误的

野指针

野指针指向的是非法的空间

int *p=(int *)0x1110;

cout<<*p<<endl;//错误,读取访问权限冲突

在程序中避免出现野指针

const修饰指针

const修饰指针:常量指针

const修饰常量:指针常量

const即修饰指针又修饰常量

int a=10;

常量指针

const int *p=&a;

特点:指针的指向可以修改,但指针指向的值不可以修改

*P=20;//错误,指针指向的值不可以修改

*p=&b;//指针指向可以修改

指针常量

int *const p=&a;

特点:指针的指向不可以修改,指针指向的值可以修改

*p=20;//对的,指针指向的值可以改

p=&b;//错误,指针的指向不可以修改

const即修饰指针又修饰常量

const int *const p=&a;

特点:指针的指向和值都不可以修改

指针和数组

作用:利用指针访问数组中元素

int main(){

int arr[]={1,2,3,4,5,6,7,8,9,10};

cout<<"第一个数组元素"<<arr[0]<<endl;

int *p=&arr;//arr就是指向数组的首地址

cout<<”利用指针访问第一个元素“<<*p<<endl;

*p++;//利用指针向后偏移四个字节

cout<<”利用指针访问第二个元素“<<*p<<endl;

}

利用指针遍历数组

int arr[]={1,2,3,4,5,6,7,8,9,10};

int *p1=arr;

for(int i=0;i<10;i++){

cout<<*p1<<endl;

p++;

}

指针和函数

1、值传递

实现连个数字进行交换

void swap(int a,int b){ int temp=a; a=b; b=temp; cout<<swap a=<<a<<endl; cout<<swap a=<<a<<endl; } void swap01(int *p1,int *p2){ int temp=*p1; *P1=*p2; p2=temp } int main(){ int a,b; cout<<"输入a:"; cin>>a; cout<<"输入b:"; cin>>b; swap(int a,int b); cout<<"a="<<a<<",b="<<b<<endl; 2、地址传递 swap01(&a,&b); cout<<"a="<<a<<",b="<<b<<endl; }

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,232人围观)

还没有评论,来说两句吧...