指针 精讲

首先 可以通过指针来保存一个地址

简单说:指针就是一个地址    可以将其理解为指针定义

别人问你 指针是什么  大声告诉他指针就是一个地址

定义指针 语法:数据类型 * 指针变量名

                例如:        int      *       p

int a =10;  int*p;

p        =        &a;       p保存了a的地址    可知p是指针

0xAA5c       0xAA5c

 指针前加*代表解引用,指到指针指向内存的数据

*p=10;                可赋值修改参数

int *p;                                         两个等于   int *p=&a;(创建的指针直接指向a数据地址)

p =&a;

空指针:指针变量指向内存中编号为0的空间 (初始化)               如图所示  

 

指向0点位置      0-255是系统内存

野指针:指针变量指向非法的内存空间

//不要运行该代码 
#include<iostream>
using namespace std;
int main(){
	//野指针:指针变量指向非法的内存空间 
	int * p=(int *)0x1100; //没申请 
	//访问野指针报错
	cout<<*p<<endl; 
        system("pause");
        return 0;

	}
	//总结:空指针和野指针都不是我们申请的空间,因此不要访问 

int * p=(int *)0x1100; //没申请

这一句是核心代码  他直接调了一个没申请的内存,所以编译成功,但运行不成功

总的来说一句

空指针不空,野指针不野

接下来讲常量指针和指针常量        看const位置

就名字就能看出         哪个放到前面哪个就更重要 

例如  常量指针  

int *const p=&a;

特点:指针指向(地址)可以修改,但指针指向指向的值不可以修改

p=&b;  对

*p=20;  错

例如  指针常量  

const int *p2=&a;

特点:指针指向(地址)不可以修改,指针指向指向的值可以修改

*p2=100;    对

p2=&b;     错

#include<iostream>
using namespace std;
int main(){
	//看*和const位置关系 
	//1.const int * p=&a; 常量指针---常量重要 
	//特点:指针的指向(地址)可以修改,但是指针指向的值不可以修改
	int a=10;
	int b=10;
	const int * p=&a;
	//*p=20;错误的		值 
	p=&b;//正确的		地址 
	/*---------------------------------------------------------------*/
	 
	//2.int * const p=&a; 指针常量--指针指向重要 
	//特点:指针的指向不可以改,指针指向的值可以改
	int * const p2=&a;
	*p2=100;//正确的   值 
	//p2=&b;错误的     地址 
	/*---------------------------------------------------------------*/
	
	//3.const int *const p=&a;
	//特点:指针的指向和指针指向的值都不可以改
	const int * const p3=&a;
//	 *p3=100;错误 
//	 p3=&b;错误 
	 
	 
	
	
        system("pause");
        return 0;

	}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值