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, 取数据,存数据)作实际上是使用这种数据类型的模子作为基本单位对指针进行操作。

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

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

  • 相关阅读:
    IE9的css hack
    ie6 插入图片img png24 阴影
    clear:both; overflow:hidden
    ie6 背景图片 png24 阴影
    html 页面定位
    IE无法显示PNG
    行内元素 & 块元素
    div+css布局时的浏览器兼容问题
    删除源代码的管理信息(VSS)
    string path;
  • 原文地址:https://www.cnblogs.com/ppazhang/p/3681848.html
Copyright © 2011-2022 走看看