C++指针

Posted 飞翔的企鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++指针相关的知识,希望对你有一定的参考价值。

指针

指针的基本概念

1、指针的作用:可以通过指针间接访问内存 (指针就是内存地址

  • 内存编号是从0开始记录的,一般 用16进制数字表示
  • 可以利用指针变量保存地址

指针变量定义的语法

#include <iostream>
using namespace std;



int main() 
	// 1、定义指针
	int a = 10;
	// 指针定义的语法:数据类型 * 指针变量名;
	int* p;
	// 让指针记录变量a的地址
	p = &a;
	cout << "a的地址为:" << &a << endl;
	cout << "指针p为:" << p << endl;

	// 2、使用指针
	// 可以通过 解引用 的方式来找到指针指向的内存
	// 指针前加 * 代表解引用,找到指针指向的内存中的数据
	*p = 1000;
	cout << "a = " << a << endl;
	cout << "*p = " << *p << endl;

	return 0;

output:

a的地址为:00EFFA1C
指针p为:00EFFA1C
a = 1000
*p = 1000
请按任意键继续. . .

指针所占的内存空间

指针也是种数据类型

指针在32位操作系统下:占4个字节空间

指针在64位操作系统下:占8个字节空间

这里都是用32位操作系统演示

int b = 20;
	int* p2 = &b;
	cout << sizeof(p2) << endl;  // cout << sizeof(int *) << endl;  // 这里效果等价
	cout << sizeof(int*) << endl;

output

4
4

空指针和野指针

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

用途:初始化指针变量

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

#include <iostream>
using namespace std;



int main() 
	//空指针
	// 1、空指针用于给指针变量进行初始化
	int* p = NULL;

	// 2、空指针是不可以进行访问
	// 0~255之间的内存编号是系统占用的,因此不可以访问
	*p = 100;
	return 0;

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

#include <iostream>
using namespace std;



int main() 
	// 野指针
	// 在程序中,尽量避免出现野指针
	int* p = (int *)0x1100;

	cout << *p << endl;

	return 0;

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

const修饰指针

小技巧 * 读指针 ,const 读 常量

#include <iostream>
using namespace std;



int main15() 
	// 1、const修饰指针   常量指针
	int a = 10;
	int b = 20;

	const int* p = &a;
	// 指针指向的值不可以改,指针的指向可以改
	// *p = 20;  错误
	p = &a;  // 正确


	// 2、const修饰常量   指针常量
	// 指针的指向不可以改,指针指向的值可以改
	int* const p2 = &a;
	*p2 = 100; // 正确
	// p2 = &b; // 错误的


	// 3、const修饰常量和指针
	// 指针的指向,和指针指向的值 都不可以改
	const int* const p3 = &a;
	// *p3 = 100;  // 错误
	// p3 = &b;	// 错误

	return 0;

1、常量指针

2、指针常量

3、const即修饰指针,又修饰常量

C++指针详解

请点击需要的内容, 篇目在不断更新扩充中

1.基础

  指针基础详解

2.提高

  指针与一维数组

  字符指针

  指针与n维数组

3.高级特性

  智能指针基础用法

 

欢迎评论, 或者联系 Bean-Shooter@outlook.com

以上是关于C++指针的主要内容,如果未能解决你的问题,请参考以下文章

C++成员函数指针指向全局函数指针

C++指针

C++|深入理解智能指针

C++数组,指针,引用以及三者的复合类型

C++ - 指针总结

C++ 指针与数组