指针 精讲

发布时间:2024年01月11日

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

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

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

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

? ? ? ? ? ? ? ? 例如:? ? ? ? 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;

	}

?

文章来源:https://blog.csdn.net/weixin_61847358/article/details/135528635
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。