zoukankan      html  css  js  c++  java
  • 3、指针变量的运算、指针变量所占字节问题

    1.指针变量的运算

    指针变量不能相加 不能相乘 也不能相除
    如果两个指针变量指向的是同一块连续空间中的不同存储单元
    则这两个指针变量才可以相减
    # include <stdio.h>
    
    int main(void)
    {
        int i = 5;
        int j = 10;
        int * p = &i;
        int * q = &j;
        int a[5];
        p = &a[1];
        q = &a[4];
        printf("p和q所指向的单元相隔%d个单元
    ", q-p);//p和q所指向的单元相隔3个单元
    
        //p - q 没有实际意义
    
        return 0;
    }

    2、一个指针变量占几个字节(非重点)

    预备知识:
      sizeof(数据类型)
      功能:返回值就是该数据类型所占的字节数
      例子:sizeof(int)=4 sizeof(char)=1
         sizeof(double)=8


      sizeof(变量名)
      功能:返回值是该变量所占的字节数

      假设p指向char类型变量(1个字节)
      假设q指向int类型变量(4个字节)
      假设r指向doub1e类型变量(8个字节)
      请问:pqr本身所占的字节数是否一样?
        答案:pqr本身所占的字节数是一样的

    总结:
      一个指针变量,无论它指向的变量占几个字节该指针变量本身只占四个字节   一个变量的地址是用该变量首字节的地址来表示
    /*---------------------------------------------------------------------
    一个指针变量占几个字节的问题
    -----------------------------------------------------------------------
    p、q、r只存放了第一个字节的地址,但p、q、r占4个字节
    因为第一个编号地址需要4个字节去保存
    cpu控制内存有32根线即32位,8位一个字节,即4个字节去控制每一个单元地址
    ----------------------------------------------------------------------*/
    # include <stdio.h>
    
    int main(void)
    {
        char ch = 'A';
        int i = 99;
        double x = 66.6;
        char * p = &ch;
        int * q = &i;
        double * r = &x;
    
        printf("%d %d %d
    ", sizeof(p), sizeof(q), sizeof(r));
    
        return 0;
    }
    
    /*------------------------------------
        输出结果:
                4 4 4
                Press any key to continue
    -------------------------------------*/
  • 相关阅读:
    redis——事务
    redis——队列
    linux安装mysql5.7
    转载:centos7yum默认为阿里云镜像
    redis——缓存穿透、缓存击穿、缓存雪崩
    redis——持久化
    redis——分布式锁
    并发编程实践
    Java并发包中线程同步器
    并发包中ScheduledThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/12639356.html
Copyright © 2011-2022 走看看