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

    关键概念:

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

  • 相关阅读:
    单元测试、集成测试、系统测试
    函数
    python中的math函数
    字符串和数据类型转换
    range()函数
    input()函数
    Linux如何通过命令查看日志文件的某几行(中间极几行或最后几行)
    【转】接口测试面试题
    【转】用Fiddler做抓包分析详解
    为什么要使用fiddler抓包?抓包用来干什么?
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/9678176.html
Copyright © 2011-2022 走看看