#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. elk收集tomcat的日志

    logstash收集tomcat的日志 不要修改下tomcat中server.xml的日志格式,否则tomcat无法启动,试过多次,不行,就用自带的日志让logstash去收集 首先给tomcat日志 ...

  2. Nginx日志中的金矿

    http://www.infoq.com/cn/articles/nignx-log-goldmine/

  3. 【使用新版mysql驱动的改变】---记忆犹新

    关于 版本的问题: 之前安装数据库的时候  安装的mysql 8.0  脚本文件来自5.7 的数据库 maven版本3.5.3 jdk1.8 tomcat 9 跑maven项目的时候  遇到各种问题 ...

  4. express服务端

    1. 使用 Node.js + Express 开发服务端 2. 使用 Node.js + Express+MySQL 实现简单的增删改查 3. 初识NodeJS服务端开发(Express+MySQL ...

  5. Micro LED 技术详谈

    一.显示技术的发展概况 1. 显示技术 顾名思义,是一种将反映客观外界事物的信息(光学的.电学的.声学的.化学等),经过变换处理,以适当形式(主要有图像.图形.数码.字符)加以显示.供人观看.分析.利 ...

  6. sql内联注入

    测试字符串 变    种 预 期 结 果 ' 触发错误.如果成功,数据库将返回一个错误 1' or '1'='1 1') or ('1'='1 永真条件.如果成功,将返回表中所有的行 value' o ...

  7. (转)利用Beautiful Soup去抓取p标签下class=jstest的内容

    1.利用Beautiful Soup去抓取p标签下class=jstest的内容 import io import sys import bs4 as bs import urllib.request ...

  8. 前端控制台 JavaScript函数报错 SyntaxError: expected expression, got ';' SyntaxError: expected expression, got 'if'

    在火狐浏览器下调试时, 页面报错SyntaxError: expected expression, got ';'或者SyntaxError: expected expression, got 'if ...

  9. PowerShell .Net整套环境搭建及部署系列

    此系列包含一套完整的集群部署,全是个人原创(除第一个是摘抄的),转载请注明出处 其中DFS部分在国内资料极少,且全是重复的,还是外面好些,有问题可以给出解决方案 若内容有不详之处或你也同样被DFS所困 ...

  10. 菜鸟系列k8s——快速部署k8s集群

    快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...