• C++指针易错点梳理


    1 指针定义

    指针是一个变量;指针的值是另一个变量的地址。变量的声明

    type *var-name;

    var-name 是指针变量的名称。星号是用来指定一个变量var-name是指针变量。

    int    *ip;    /* 变量ip是一个整型的指针 */
    #include <iostream>
     
    using namespace std;
     
    int main ()
    {
       int  var = 20;   // 实际变量的声明
       int  *ip;        // 指针变量的声明

    ip = &var; // 在指针变量中存储 var 的地址 cout << "Value of var variable: "; cout << var << endl; // 输出在指针变量中存储的地址 cout << "Address stored in ip variable: "; cout << ip << endl; // 访问指针中地址的值 cout << "Value of *ip variable: "; cout << *ip << endl; return 0; }
    Value of var variable: 20
    Address stored in ip variable: 0xbfc601ac
    Value of *ip variable: 20

     2 实例辨析

    double dval;  
    double *pd = &dval;  ##正确。声明同时初始化
    double *pd2 = pd;   ##正确。pd指针存放的是dval的地址
    
    int *pd3 = pd;   ##错误。pd3的类型和pd类型不符

    3 解引用赋值和指针赋值

    星号*有两种不同含义:

    (1)解引用符

    (2)声明变量p是指针

     ##
     int
    num = 7; int *p = &num; printf("数值%d所在的地址是 %p ", num, p); printf("指针p所指向的地址为 %p , 该地址上所保存的值为%d ", p, *p); *p = 100; ##这里的*是是解引用操作符,对*p赋值(对左值赋值),从而改变p所指的地址上所保存的值,从而改变此地址所存储的变量num的值。(上面num的值变为100)
    printf("指针p所指向的地址为 %p , 该地址上所保存的值为%d
    ", p, num);    
        int num = 7, another = -5;
        int *p = &num;
        p = &another;
        printf("%d
    ", *p);//此时p指向了another,所以输出了another的值,即-5

    关键概念:

    像&和*这种符号,既能做表达式里面的运算符,又能做声明的一部分。需要根据上下文区分。

  • 相关阅读:
    深港DJ好听的歌曲
    电调的相关知识
    CAD画图技巧经验
    第一期周二航拍视频分享 2017/07/10
    网站资料
    如何读懂零件图
    航拍技巧经验总汇
    乐迪AT9
    机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
    Eclipse调试Java程序技巧
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/9678176.html
Copyright © 2020-2023  润新知