zoukankan      html  css  js  c++  java
  • C++Review11_指针数组和数组指针

    首先明确一些基本概念:

    =  等于号两边的数据类型要一致,如果不一致需要显式或者隐式的类型转换;

    变量作为右值时,编译器只是取变量的值。

    运算符的优先级:()>[]>*

    接下来看:

    int *p1[10];    表示是一个数组p1,[]的优先级比*高。元素是指针的数组,指针数组;

    int (*p2)[10];  表示的是一个指针,[]告诉我们这是指向数组的指针。数组中的元素有10个,元素类型int,数组指针。
      ->私下可以这么理解 int (*)[10] p2; int (*)[10]是指针类型, p2是指针变量;

    地址强制转换

    struct Test{

      int Num;

      char *pcName;

      short sData;

      char cha[2];

      short sBa[4];

    }*p;

    假设p的值为0x100000;

    p+0x1= 0x100000+size(Test)*0x1;                                                                 //结构体大小为20byte,所以p+0x1 = 0x100014。

    (unsigned long)p + 0x1 = 0x100001;                                                              //因为p已经变成无符号长整型,所以就直接相加即可。

    (unsigned int*)p+0x1 =  0x100000+sizeof(unsigned int )*0x1 =  0x100004;  //unsigned int有4byte大小。

  • 相关阅读:
    Codeforces Round #369 (Div. 2)
    poj3189二分图多重匹配
    a 标签传值
    phpStudy 虚拟主机
    wampserver 虚拟主机
    $file函数
    PHP脚本运行时间
    查询timestamp类型数据
    驼峰法
    easyUI导出数据
  • 原文地址:https://www.cnblogs.com/grooovvve/p/12362714.html
Copyright © 2011-2022 走看看