zoukankan      html  css  js  c++  java
  • int a[5]={}, &a+1与(int*)a+1的区别

    #include <iostream> 
    #include <typeinfo> 
    using namespace std;
      
    int  main()  
    { 
        int b, *pb;  
        char *pb2;  
        char *pb3;  
        //&b = 0x001af74
        pb = &b + 1;  //0x001af78   int*
        pb2 = (char*)&b + sizeof(b);  //0x001af78  char*
        pb3 = (char*)&b + 1; //0x001af75   char*
        printf("&b=%#x, pb=%#x, pb2=%#x,pb3=%#x
    ", &b, pb, pb2, pb3);  
      
        int a[5]={1,2,3,4,5}, *pa;  
        char *pa2;  
        //&a = 0x002cfc00    int[5]*
        pa = (int*)(&a + 1);  //pa = 0x002cfc14  int*
        pa2 = (char*)&a + sizeof(a);  //pa2 = 0x002cfc14   char*
        //(int*)&a + 1 = 0x002cfc04          &a + 1 = 0x002cfc14
        printf("
    Diff: &a=%#x, %#x, %#x
    ", &a, (int*)&a + 1, &a + 1); // 两者是有区别的  
      
        printf("&a=%#x, pa=%#x, pa2=%#x
    ", &a, pa, pa2);  
        printf("Equal2=%d
    ", (void*)pa == (void*)pa2 );  
      
        puts("结论: &a + 1 == (char*)&a + sizeof(a)
    ");  
      
        return 0;
    }
  • 相关阅读:
    sqhhb
    12333
    12

    今日份
    12
    彻底理解 Cookie、Session、Token
    https原理
    12312
    uiower
  • 原文地址:https://www.cnblogs.com/yaowen/p/4795763.html
Copyright © 2011-2022 走看看