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

    关键概念:

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

  • 相关阅读:
    自定义控件类
    初探ListView和Adapter
    探究android控件及布局
    页面布局之一边固定一边自适应
    cavans 文字换行
    移动开发01 页面取消横向滚动条
    移动端rem,scale动态设置
    map,area标签
    css3属性——border-radius用法
    z-index要同级比较,absolute包含块外有overflow-hidden
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/9678176.html
Copyright © 2011-2022 走看看