C++学习(3)——指针

时间:2019-11-27
本文章向大家介绍C++学习(3)——指针,主要包括C++学习(3)——指针使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

指针

1. 指针所占内存空间

在32位操作系统下,占用4个字节,64位下占8个字节

2. 空指针与野指针

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

    • 用途:初始化指针变量

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

      0~255之间的内存编号是系统占用的,因此不可以访问

    int *p = NULL;
    cout << *p << endl;   //访问会报错
  • 野指针:指针变量指向非法的内存空间

    int *p = (int *)0x1100;    
  • 空指针与野指针都不是我们申请的空间,因此不要访问

3. const修饰指针

const修饰指针有三种情况:

  1. const修饰指针——常量指针
  2. const修饰常量——指针常量
  3. const既修饰指针,又修饰常量
  • const修饰指针——常量指针

    int a = 10;
    const int *p = &a;

    特点:指针的指向可以修改,但是指针指向的值不可以修改

    *p = 20;  //×
    int b = 20;
    p = &b;   //√
  • const修饰常量——指针常量

    int a = 10;
    int * const p = &a;

    特点:指针的指向不可以改,指针指向的值可以改

    *p = 20;  //√
    int b = 20;
    p = &b;   //×
  • const既修饰指针,又修饰常量

    int a = 10;
    const int * const p = &a;

    特点:指针的指向和指针指向的值都不可以修改

    *p = 20;  //×
    int b = 20;
    p = &b;   //×

4. 指针和数组

利用指针访问数组中的数据

int arr[3] = {1,2,3};
int *p = arr;
/* 此时*p==arr[0] */
//数组在内存中的空间是连续的,可以通过指针自加访问下一元素
p++;  
/* 此时*p==arr[1] */

原文地址:https://www.cnblogs.com/maeryouyou/p/11941420.html