zoukankan      html  css  js  c++  java
  • C++指针的相关研究

    //常量指针(指向常量的指针)【常量在前面 指针在后面 所以叫常量指针】
    //为了解决指针可能误修改或破坏内存中的数据,我们可以对内存中的数据加上写保护。即具有这种属性的指针只能够读出内存中的数据,
    //却不能修改内存中的数据。我们把具有这种属性的指针称为指向常量的指针,简称常量指针。
    #include<iostream.h>
    int main()
    {
    int t=1;
    const int i=2;
    const int *p;//常量指针允许指向相同类型的别的变量(或常量)可以用常量赋值,但不能间接引用修改数据,也可以更改它的指向。
    // p=&i;
    // p=&t;
    *p=10;//不能间接引用修改数据
    return 0;
    }


    //指针常量(指针在前常量在后面)【int * const p=&f 】
    #include<iostream.h>
    int main()
    {
    int t=9;
    int i=100;
    //const int i=100;//不允许指针常量指向常量
    int *const p=&i;//变量i的内存地址变成了 常量的内存地址(不能被重新赋予新的地址)
    *p=1;//可以间接赋值
    //p=&t;//不能改变他的指向
    return 0;
    }
    #include<iostream.h>
    int main()
    {
    const int i=90;
    //int *p=&i;//不能把常量的地址给指针变量
    const int *p=&i;//常量指针则可以
    return 0;
    }


    #include<iostream.h>
    void main()
    {
    //指向常量 的 指针常量 ——————都不行 故*p=9与p=&b 都是错的
    const int a=10;
    int b=20;
    const int*const p=&a;
    cout<<*p<<endl;
    }


    //******************************************************** 关于*(p)++的研究
    #include<iostream.h>
    int main()
    {
    int a[6]={5,3,4,1,2,6};
    int *p=a;
    cout<<(*p)++<<" "<<*p<<endl;//(*p)++是表示使p所指向的元素增加1,但这里输出*p并不是如此
    cout<<*p<<endl;//*p所指向的元素在这里才实现自增1,可见第一个元素的内存地址存的值已经自增1了,但是一开始却表达不出来。
    return 0;
    }



    #include<iostream.h>
    int main()
    {
    int a[6]={5,3,4,1,2,6};
    int *p=a;
    for(int i=0;i<6;i++)
    {
    cout<<(*p)++<<" ";//输出的结果并不是6 7 8 9 10 11;而是完全把首元素当成5开始自增了
    }
    return 0;
    }



    #include<iostream.h>
    int main()
    {
    int a[6]={5,3,4,1,2,6};
    int *p=a;
    cout<<a[0]++<<endl;//这个a[0]++也是如此,输出来的元素也不会增加
    return 0;
    }
  • 相关阅读:
    JuiceSSH:安卓平台免费好用的 SSH 客户端
    git&github-本地库推送到远程库
    git&githib-给远程库取别名
    Git分支管理的本质
    MySQL学习笔记(一)--逻辑架构学习
    mysql-主从备份问题小结
    Docker--数据管理之Volumes
    初识OpenSSH--1
    一个最简单的Dockfile实践
    构词法2
  • 原文地址:https://www.cnblogs.com/keiling/p/2281450.html
Copyright © 2011-2022 走看看