当前位置:   article > 正文

【C++】指针

【C++】指针

目录

1、指针基本概念: 可以通过指针间接访问内存

2、定义语法 : 数据类型 * 变量名

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

4、指针所占内存空间:

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

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

7、const修饰指针

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

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


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

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

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

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

  1. //初始化指针变量
  2. int * p = NULL;
  3. //NULL在程序中代表0,即空指针内存编号
  4. //0~255内存编号是系统占用的,不可以访问
  5. //空指针不可以进行访问,程序会崩(写入访问权限冲突)
  6. *p = 100
6、野指针:指针变量指向非法的内存空间,尽量避免出现
  1. int * p = (int *)0x1100;
  2. //随便拿一个指针操纵一块内存
7、const修饰指针

const修饰指针 -- 常量指针

const修饰常量 -- 指针常量

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

  1. int a = 10; //内存0x0011
  2. int b = 10; //内存0x0022
  3. int * p = &a; //内存0x0011

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

  1. //常量指针
  2. const int * p = &a;
  3. //错误
  4. *p = 20;
  5. //正确
  6. p = &b;

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

  1. //指针常量(const修饰常量p)
  2. int * const p = &a;
  3. //正确
  4. *p = 20
  5. //错误
  6. p = &b;

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

const int * const p = &a;

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

8、指针和数组:利用指针可以访问数组中的每一个元素
  1. int arr[10] = {1,2,3,4,5,6,7,8,9,10};
  2. int * p = arr; //arr是数组首地址
  3. for(int i = 0; i < 10; i++)
  4. {
  5. cout << *p << endl;
  6. p++; //加一次往后偏移4个字节,因为创建的指针是int类型
  7. }
9、指针函数:指针作为函数的形参
  1. void swap(int *p1,int * p2)
  2. {
  3. int temp = *p1;
  4. *p1 = *p2;
  5. *p2 = temp;
  6. }
  7. int main()
  8. {
  9. int a = 10;
  10. int b = 20;
  11. //地址传递可以修饰实参
  12. swap(&a,&b);
  13. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/933739
推荐阅读
相关标签
  

闽ICP备14008679号