【C++】指针

目录

[1、指针基本概念: 可以通过指针间接访问内存](#1、指针基本概念: 可以通过指针间接访问内存)

[2、定义语法 : 数据类型 * 变量名](#2、定义语法 : 数据类型 * 变量名)

3、使用指针:解引用(指针前加一个*号),找到指针指向的内存的数据

4、指针所占内存空间:

5、空指针:指针变量指向内存中编号为0的空间,用于初始化指针变量

6、野指针:指针变量指向非法的内存空间,尽量避免出现

7、const修饰指针

8、指针和数组:利用指针可以访问数组中的每一个元素

9、指针函数:指针作为函数的形参


1、指针基本概念: 可以通过指针间接访问内存
2、定义语法 : 数据类型 * 变量名
复制代码
int a = 10;
int * p;
p = &a;
//指针p记录a的地址
3、使用指针:解引用(指针前加一个*号),找到指针指向的内存的数据
4、指针所占内存空间:

int *、float *、double *、char* :在32位(x86)操作系统下占4个字节空间(不管什么数据类型),在64位下占8个

5、空指针:指针变量指向内存中编号为0的空间,用于初始化指针变量

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

复制代码
//初始化指针变量
int * p = NULL;
//NULL在程序中代表0,即空指针内存编号
//0~255内存编号是系统占用的,不可以访问

//空指针不可以进行访问,程序会崩(写入访问权限冲突)
*p = 100;
6、野指针:指针变量指向非法的内存空间,尽量避免出现
cpp 复制代码
int * p = (int *)0x1100;
//随便拿一个指针操纵一块内存
7、const修饰指针

const修饰指针 -- 常量指针

const修饰常量 -- 指针常量

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

cpp 复制代码
int a = 10; //内存0x0011
int b = 10; //内存0x0022
int * p = &a; //内存0x0011

** 常量指针:指针指向可以修改,但是指针指向的值不可以改

cpp 复制代码
//常量指针
const int * p = &a;
//错误
*p = 20;
//正确
p = &b;

** 指针常量:指针指向不可以修改,但是指针指向的值可以改

cpp 复制代码
//指针常量(const修饰常量p)
int * const p = &a;

//正确
*p = 20;   
//错误
p = &b;

const即修饰指针,又修饰常量:指针的指向和指针指向的值都不可以修改

cpp 复制代码
const int * const p = &a;

#记忆技巧:const紧跟什么就是限制什么,紧跟*就是限制解引用不能修改值,紧跟p就是限制指针不能修改指向

8、指针和数组:利用指针可以访问数组中的每一个元素
cpp 复制代码
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int * p = arr; //arr是数组首地址

for(int i = 0; i < 10; i++)
{
    cout << *p << endl;
    p++; //加一次往后偏移4个字节,因为创建的指针是int类型
}
9、指针函数:指针作为函数的形参
cpp 复制代码
void swap(int *p1,int * p2)
{
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

int main()
{
    int a = 10;
    int b = 20;
    //地址传递可以修饰实参
    swap(&a,&b);
}
相关推荐
_Evan_Yao3 分钟前
前后端联调怎么排查问题?从 Network 到后端日志,一步步定位错误
开发语言·后端·团队开发·需求分析
hudd6687 分钟前
JavaEE 初阶 - 多线程(进阶)
java·开发语言·java-ee
小白快快跑哦23 分钟前
python-字符串全解(六):正则表达式-前后相断言
开发语言·python·正则表达式·前后相断言
ZZHow102425 分钟前
Ascend C算子开发(高级)笔记
c++·人工智能·笔记·深度学习·华为云
kimnoic28 分钟前
Python数据分析中正则表达式匹配字符串与常用函数示例详解
开发语言·python
中屹指纹浏览器svip38 分钟前
打开账号环境网页报错,常见原因有哪些?
服务器·开发语言·php·中屹指纹浏览器
朝朝辞暮i1 小时前
第 01 讲:Python 变量、对象、数据类型与内存引用
开发语言·python
aqiu1111111 小时前
【C++算法打怪专栏】LeetCode 217. 存在重复元素(解法总结)
c++·算法·leetcode
外收内放1 小时前
Python基础语法练习题(69)
开发语言·python
lojox1 小时前
深入理解 C++ STL:vector 底层实现、迭代器失效与 list 特性
开发语言·c++