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] */
posted @ 2019-11-27 12:25  马尔尤尤  阅读(137)  评论(0编辑  收藏  举报