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大小。

  • 相关阅读:
    商务邮件
    比较好用的办公软件
    django之创建第6-2个项目-过滤器列表
    Linux管道思想
    django之创建站点之基本流程
    django资料
    Django之 创建第一个站点
    python之获取微信服务器的ip地址
    python之获取微信access_token
    python之模块py_compile用法(将py文件转换为pyc文件)
  • 原文地址:https://www.cnblogs.com/grooovvve/p/12362714.html
Copyright © 2011-2022 走看看