zoukankan      html  css  js  c++  java
  • 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

    关键概念:

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

  • 相关阅读:
    蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)
    蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)
    Java远程调用邮件服务器,实现邮件发送
    利用命令行来安装应用到android虚拟机
    sql查询语句优化需要注意的几点
    hdu1198--并查集
    处理百万级以上的数据查询提高效率的办法
    EasyMock入门
    百度绿萝算法2.0更新 外链数降低分析
    Memcached 学习笔记(二)——ruby调用
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/9678176.html
Copyright © 2011-2022 走看看