zoukankan      html  css  js  c++  java
  • 指针专题1-指针变量

    1 内存大小

    1K Byte

    0x00-->0X400

    0-->210=1024

    2K Byte

    0x00-->0X800

    0-->212=2048

    4K Byte

    0x00-->0X1000

    0-->212=4096

    1M Byte

    0x00-->0X10 0000

    0-->220

    2M Byte

    0x00-->0X20 0000

    0-->221

    4M Byte

    0x00-->0X40 0000

    0-->222

    1G Byte

    0x00-->0X4000 0000

    0-230

    2G Byte

    0x00-->0X8000 0000

    0-->231

    4G Byte

    0x00-->0X1 0000 0000

    0-->232

    2 地址与内容

     char *p_char:内存中每个位置可以存储1个字节,每个位置8位,可以表示无符号0~255,或者有符号-128~127

    char *p_int:内存中每个位置可以存储4个字节,每个位置32位,可以表示无符号0~232-1,或者有符号-231~231-1

    3 指针变量的定义

    方法1:先定义,再赋值

    float a=99.5;
    float *p_a;  //定义指针变量
    p_a = &a;   //指针变量赋值 p_a指向变量a的地址
    
    printf("p_a = %#x
    ", p_a);
    printf("a = %f
    ",a);

    输出:

      p_a = 0x62fe98
      a = 99.500000

    方法2:定义的同时赋值

    float a=99.5;
    float *p_a = &a;  //定义指针变量指向a的地址
    表达式 右值 类型
    a 99.5 float
    p_a 0x62fe98 float *
    *p_a 99.5 float

     4 修改指针变量

    p_a = &b;  //修改指针变量指向变量b的地址

    5 修改内存上的数据

    int a=15, b=99;
    int *p=&a;    //定义指针p,并让p指向a的地址
    *p=b;    //通过指针变量修改a的地址上的数据,等于变量b的值
    printf("%d,%d,%d",a,b,*p);

    输出:

      99,99,99

    6 指针表达式

    char ch[2]={'a','A'};
    char *cp=&ch;
    printf("%#x
    ",cp);        //0x62fe98
    printf("%c
    ",*cp+1);    //'b'
    printf("%c
    ",*(cp+1));    //'A'
    #if 0
    printf("%c
    ",*++cp);    //'A'
    printf("%c
    ",*cp);        //'A'
    #endif
    #if 0
    printf("%c
    ",*cp++);    //'a'
    printf("%c
    ",*cp);        //'A'
    #endif
    #if 0
    printf("%c
    ",++(*cp));    //'b'
    printf("%c
    ",*cp);        //'b'
    #endif
    #if 1
    printf("%c
    ",(*cp)++);    //'a'
    printf("%c
    ",*cp);        //'b'
    #endif
    表达式 结果 再次打印*cp值 说明
    *cp+1 'b'   先计算*cp='a','a'+1='b'
    *(cp+1) 'A'   取cp下一个地址的值'A'
    *++cp 'A' 'A' cp先+1,再取cp+1地址的值,即取cp下一个地址的值'A'
    *cp++ ‘a’ 'A' ++先用后加,所以表达式结果就是*p='a',然后执行cp++.在这条指令后面打印*cp的值='A'
    ++*cp 'b' 'b' =++(*cp).*p='a','a'+1='b'
    (*cp)++ 'a' 'b' ++先用后加,所以表达式结果就是*p='a',然后执行(*cp)++ = ‘a’++,在这条指令后面打印*cp的值='b'
  • 相关阅读:
    【Docker】Dockerfile的基本使用
    Linux nsenter 命令简介及 切换宿主机网络为docker容器网络实践
    docker+selenium搭建分布式web自动化测试环境
    docker容器与虚拟机的区别
    docker 网络模式 和 端口映射
    Java基础之数组的定义与使用详解
    Java基础之数据类型、标识符、运算符、程序流程控制结构
    docker常用命令详解
    python查询腾讯云COS存储桶目录及文件大小
    python-自动化监控进程发钉钉报警
  • 原文地址:https://www.cnblogs.com/Mike2019/p/11805964.html
Copyright © 2011-2022 走看看