C++基础---指针

1. 指针

1.1 指针的概念

  • 指针:就是用来保存内存地址的变量。
    注:通过指针,程序员可以直接对内存进行操作。

1.2 指针与变量类型

  • 指针:只能存储与它类型相同的变量的地址。

    (1)错误的指针赋值方法:
    float a; 
    int *p = &a; 
    编译错误:error C2440,"="cannot convert from "float*" to "int*"  。</font>
    
    (2)正确的指针赋值方法:
    int a; 
    int *p = &a; 

1.3 用指针来访问值

  • 符号”& “: 获取变量在内存中的保存地址符,int *p = &a;
  • 符号”* “:间接引用运算符,当使用星号时,就读取它后面变量中所保存的地址处的值
    注:指针变量p前面的间接运算符“*”的含义是指“存储在此地址处的值”。*p的意思就是读取该地址处的值。由于p存储的是a的地址,因此*p就是读取保存a变量地址处的值。

1.4 指针地址、指针保存的地址、指针指向的该地址处的值的区别

  • 代码示例:
    int a = 1;
    int *p = &a;
  • 指针地址:指保存指针变量的内存地址,获取指针地址也是用&(取地址符),就是&p得到指针的内存地址
  • 指针保存的地址:指指针指向的变量的内存地址,存储与它类型相同的变量的地址,就是p/&a,它俩值是一样的;
  • 指针指向的该地址处的值:指指针指向的内存地址中保存的值,就是*p/a,它俩值是一样的;

1.5 指针对数值的操作

  • 计算机通过间接运算符“*”访问并读取到该地址的数据,那么就可以对数据进行修改。

    int a = 1;
    int *p = &a;
    cout <<"a="<< a << "; \t" <<"*p"<< *p <<";"<< endl; 
    =>a=1;  *p=1;
    *p = 100;
    cout <<"a="<< a << "; \t" <<"*p"<< *p <<";"<< endl; =>a=100;    *p=100;
    a = 20;
    cout <<"a="<< a << "; \t" <<"*p"<< *p <<";"<< endl;
    =>a=20;  *p=20;

1.6 指针保存的地址可以更改

  • 代码示例:

    int a = 1;
    int b = 2;
    int *p = 0; //p的值为空指针地址00000000
    p = &a;//p的值为变量a的内存地址
    p = &b;//p的值为变量b的内存地址

参考文献:
[1]《C++全方位学习》范磊——第八章
[2]《C++程序设计教程(第二版)》钱能——第三章
[3] 百度搜索关键字:C++指针、指针地址、指针保存的地址、指针指向的该地址处的值

你可能感兴趣的:(指针地址,C++数据类型,指针保存的地址,指针指向内存地址的值)