zoukankan      html  css  js  c++  java
  • c语言操作符 “++”另类行为

    正常情况下,我们使用++

    int a = 1;

    a++;

    printf(“%d”,a); // 2;

    很简单没什么好说的。

    #include <stdio.h>
     
    int
    main()
    {
        int a = 2 ;
        int *p =  &a ;
        int b[5][10] = {4} ;
        int (*q)[10] = b ;
        
        printf("p1:%d,p2:%d,*p=%d",p++,p); 
        printf("
    ");
        printf("ap1:%d,ap2:%d",q++,q);
    }

    第一个输出两个数应该相差4,我的是,p1:-1077032260 p2:-1077032256

    第二个输出应该相差40,我的是,ap1:1077032468  ap2:-1077032428

    p与q都是指针,它的值是它所指向的数据在内存中的地址。

    它们所指向的数据都有自己的数据类型,这个数据类型可以看作是一个模子,int的模子是4Bit大。

    对指向某种数据类型的指针进行操(i++, --i, 取数据,存数据)作实际上是使用这种数据类型的模子作为基本单位对指针进行操作。

    把指针进行++操作,实际上是使用指向这种数据类型的指针去获得下一个相同数据类型的数据在内存中地址,地址的偏移是要根据模子的大小决定的。

    指针的值(也就是下一个数据的内存地址)就会加上这种数据类型(模子)的大小。

  • 相关阅读:
    spring boot自定义starter
    Java死锁以及命令检测
    Java线程状态切换以及核心方法
    PowerMock单元测试
    python数据结构与算法
    算法学习 并查集(笔试题目:找同伙)
    大写
    算法学习 交叉排序
    算法学习 长整数相加
    python数据结构与算法——哈希表
  • 原文地址:https://www.cnblogs.com/ppazhang/p/3681848.html
Copyright © 2011-2022 走看看