c++ 指针

146 阅读1分钟

C/C++中指针的深入理解_C 语言_脚本之家 (jb51.net)

指针与内存地址与解指针

  • int *p=&a; // '&'的作用就是把a变量在内存中的地址给提取出来
  • 指向内存地址,0x00000的地址
  • int *,float *,指针都是4个字节,不管是什么数据类型
int a = 12;
int * p = &a; //p可定是内存地址了

std::cout << *p << std::endl; //返回12
*p = 123; //写入
std::cout << a << std::endl; //返回123
std::cout << &a << std::endl; //返回地址
std::cout << p << std::endl; //返回地址

image.png

空指针

  • 空指针:指针变是指面内存中编号为0的空间
  • 用途:初始化指针变量
  • 空指针内存是不可以访问的
int * p = NULL;
*p = 100; //会报错,0~255是系统占用的

野指针

  • 非法的内存空间
int * p = (int *) 0x100  //读取访问异常

const修饰指针

  • const 修饰指针 -常量指针
    • const int * p = &a; *p 不可以改变 p可以改变
  • const 修饰常量 - 指针常量
    • int * const p = &a; *p 可以改变 p不可以改变
  • const 修饰指针 修饰常量
    • const int * const p = &a;