zoukankan      html  css  js  c++  java
  • C++Review9_指针

    #include <iostream>
    
    using namespace std;
    
    int main() {
        int * p;
        int a = 5;
        p = &a;
        cout<<"sizeof a is "<<sizeof(a)<<endl;
        cout<<"sizeof p is "<<sizeof(p)<<endl;
        cout<<"&a is       "<<&a<<endl;
        cout<<"p is        "<<p<<endl;
        cout<<"a is        "<<a<<endl;
        cout<<"*p is       "<<*p<<endl;
        cout<<"&p is       "<<&p<<endl;
    
        *p = 6;
        cout<<"After opration  *p = 6"<<endl;
        cout<<"a is        "<<a<<endl;
        cout<<"*p is       "<<*p<<endl;
        return 0;
    }

    int * p; //定义了一个指针;
    实际上也是定义了一个变量,这个变量的类型是指向int的指针。
    这个变量在内存中获得到了一个4字节大小的空间;4字节正好可以表示内存的任意地址;
    这个4字节大小的空间是被用来存储地址值的;//这是指针不同于普通变量之处,其值会被解释为地址;
    所以指针变量的值,就是内存中某个空间的地址值;


    打印&p 会显示一个地址值,例如 0x0028ff0c,这是4字节大小内存空间的首地址,也就是指针变量所在的地址,通常是系统自动分配的,且与p变量名绑定,一旦绑定不可修改;


    打印 p 会显示p的值,p的值是4字节大小的值,是一个地址值。系统会把p的值解释为一个地址值。


    接下来假设0x0028ff0c为首地址的4个字节内存空间中存储的值为0x0028ff08,即地址值为0x0028ff08。

    换句话说指针p的值为0x0028ff08。

    *p表示什么呢?

    *p     ->首先符号*可以理解成一个钥匙;这个钥匙用来读取某个内存上的值;格式为:*(地址)=*p=*(0x0028ff08),实际上表示的是0x00112233这个地址上内存空间的值;这个过程也叫解引用。地址可以理解为引用。或者叫解地址也好。


    int *p = NULL; //定义一个指针变量时,同时给变量p赋了值;我们可以这么认为变量p,或者叫指针p,存储的值为0x00000000
    *p = NULL;       //表示的是在0x00000000为首地址的4个字节内存空间中,赋值为0x00 0x00 0x00 0x00;(特意分开);

    所以这个符号*在定义和赋值时表示的含义不一样,定义时表示的是指针,赋值时表示的是解引用。

    将数值存储到指定的内存地址:

    *p = 0x100;  //表示把0x0028ff08这个地址处内存空间值赋值为0x100;

  • 相关阅读:
    Oracle DUL/AUL/ODU 工具说明
    Mysql 不同版本 说明
    Oracle RAC ASM disk header 备份 恢复 与 重建 示例说明
    Oracle checkpoint 说明
    Oracle RBA(Redo Byte Address) 说明
    Oracle wrap 和 unwrap( 加密与解密) 说明
    Oracle 10.2.0.5.4 Patch Set Update (PSU) – Patch No: p12419392
    Oracle RAC CSS 超时计算 及 参数 misscount, Disktimeout 说明
    Oracle 估算数据库大小的方法
    Oracle 11g 11.2.0.2 Bug 10082277 – Excessive allocation in PCUR or KGLH0 heap of “kkscsAddChildNo”
  • 原文地址:https://www.cnblogs.com/grooovvve/p/12357449.html
Copyright © 2011-2022 走看看