#include <stdio.h>

void main()
{
int a[] = {}; printf("a[1] = 0x%x\n",&a[]);
printf("\n");
printf("a[1] = 0x%x\n",a + sizeof(int)); //A
printf("a[1] = 0x%x\n",&a[] + ); //B
printf("a[1] = 0x%x\n",(int* )&a + ); //C
printf("a[1] = 0x%x\n",(int* )((char*)&a + sizeof(int))); //D
}

问,A,B,C,D中那个输出的不是a[1]的地址?

有之前的博客详细的写了关于指针的特性,这就来实战个题目:

对于A选项:首先sizeof(int)在32位机下面结果就是4,a就是数组名,相当于一个指针,也就是元素的指针,a+4就是指针偏移4,所以A选项表示a[4]的地址。

对于B选项:&a[0]和a是一样的,也是一个元素的指针,&a[0] + 1就是指针偏移1,所以B选项表示a[1]的地址。

对于C选项:&a是整个数组的地址,也是数组指针int (*)[ ],如果是&a + 1,就是相当于 (&a这个数值) + (sizeof(int)*5)。但是在这个选项中&a被强制转换成int类型的一个元素指针,这个元素指针指向的就是a[0],所以这个指针往下偏移一个单位,就是a[1]的地址。

对于D选项:把&a被强制转换成char类型的一个元素指针,这个指针是char*类型,之指向一个字节的地址,往下偏移4个单位,就是a[1]的起始地址,再把这个指针强制转换成int类型,就是完全指向a[1]的指针,所以这个也是a[1]的地址。

关于一个指针的题目解析(a,&a,(int*)&a,(int*)((char*)&a + 4))的更多相关文章

  1. C++ 指针(不论什么一个指针本身的类型都是unsigned long int型)

    1.指针数组: 即 数组的元素是指针型; 例:int*pa[2]; 明明是一维的指针数组.竟当作二维数组用. [cpp] view plain copy //利用指针数组存放单位矩阵 #include ...

  2. 1Z0-053 争议题目解析86

    1Z0-053 争议题目解析86 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 86.Your production database is running in archivel ...

  3. 1Z0-053 争议题目解析154

    1Z0-053 争议题目解析154 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 154.A database is running in ARCHIVELOG mode and ...

  4. 1Z0-053 争议题目解析481

    1Z0-053 争议题目解析481 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 481.Which statement is true about a running sessi ...

  5. 1Z0-053 争议题目解析684

    1Z0-053 争议题目解析684 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 684.Your database is running in ARCHIVELOG mode. ...

  6. 1Z0-053 争议题目解析686

    1Z0-053 争议题目解析686 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 686.You execute the following FLASHBACK TABLE com ...

  7. 1Z0-053 争议题目解析699

    1Z0-053 争议题目解析699 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 699.Your database is using a default temporary ta ...

  8. Tomjson - 一个"短小精悍"的 json 解析库

    Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把Java对象(JavaBean)序列化为json格式字符串,将json格式字符 ...

  9. 第一个OC类、解析第一个OC程序

    01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...

随机推荐

  1. JAVA解析_操纵_JS_JAVA_JS引擎

    http://uuhorse.iteye.com/blog/1705684 http://blog.csdn.net/chinajash/article/details/1491570 http:// ...

  2. CentOS7或CentOS8 开机自动启用网卡的设置方法

    sudo nano /etc/sysconfig/network-scripts/ifcfg-enp0s3(p0s3是网卡,名字不同环境会有差异,输入时可按tab自动补全.) 将最后一行的 ONBOO ...

  3. Xib设置label自动换行和Label的顶部对齐

    真的是不想说自己了,一个Xib纠结了一天,简直了,整整被虐了一上午啊...... 不知道这是Xcode8的问题呢....还是我的Xib约束什么的问题..... 只想说的是,以前也是这么设置的,明明可以 ...

  4. js如何控制select展开

    找了一圈也没找到靠谱的方案,后来通过动态的控制select的size属性实现了. 这也算是一种方法吧. 先判断option的数量n,然后把select的size调整到n,当用户选择后,再把size设置 ...

  5. php7与其他版本共存

    转自: https://zhangge.net/5088.html php7编译安装 https://zhangge.net/5075.html

  6. Spring Cloud(3):配置服务(Config)

    Spring Cloud Config的目标是在在大量的微服务中,将服务配置信息和和服务的实际物理部署分离,且服务配置服务不应与服务实例一起部署.配置信息应该作为环境变量传递给正在启动的服务,或者在服 ...

  7. 【笔记】Docker入门

    这个文章讲的比较透彻,就不复制粘贴了 <Docker从入门到实践>阅读笔记 Docker安装 环境 root@fudonghai:~# uname -a Linux fudonghai - ...

  8. C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素

    /// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private stat ...

  9. [转帖]postgresql 在等待服务器启动时超时

    postgresql 在等待服务器启动时超时 2018年12月24日 :: my_name_nb 阅读数 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接 ...

  10. python的异常处理机制

    异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...