数组nice to see you again

原创 2013年12月03日 19:45:30
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) 
{
	int a[5]={1,2,3,4,5};
	int *ptr1=(int *)(&a+1);
	int *ptr2=(int *)((int)a+1);
	printf("%d,%d",ptr1[-1],*ptr2);
	return 0;
}

上测试程序来自《C语言深度解析》中的一个习题:

分析如下:

先打印出结果:


格式符变一下;;;;

	printf("%d,%p",ptr1[-1],*ptr2);



ptr1[-1]结果为5,很显然,这个表达式看上去乖乖的,但是编译器并未报错 运行正常,,个人认为这个结果完全正确!

ptr1指针指向数组最后一个元素接下来的那个地址,ptr1[-1]这里ptr1相当于数组名a的作用,-1就往后退一个数组元素大小的内存单元,也就是a[4]所在的地址单元

输出5是正确的!


*ptr2    =   2???不!!!!

(int)a+1与a+1是完全不同的两个东西。你区分明白了木有。。。。

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) 
{
	int a[5]={1,2,3,4,5};
	int *ptr1=(int *)(&a+1);
	int *ptr2=(int *)((int)a+1);
	printf("%p\n",(int *)(int)a+1);//0022ff28
	printf("%d,%p",ptr1[-1],*ptr2);
	return 0;
}

*ptr2的值就是内存单元0022ff28内存储存的内容!鬼知道编译器是怎么想的
版权声明:署名-非商业性使用-禁止演绎 3.0 未本地化版本 (CC BY-NC-ND 3.0) | GILARUS.ORG

See You Again——我最后的汇编程序

汇编语言:课程设计2前言由于本人水平不够,这里的课程设计2的程序实现并没有像王爽书中所说的那样可以不依赖于操作系统运行。 这里的程序依然要在dos下运行,而且没有实现引导现有操作系统的功能。 该程...
  • wyf12138
  • wyf12138
  • 2017年01月18日 13:34
  • 304

HDU-balloons-求颜色最多的气球的颜色

问题及代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:HDU.cpp *作 者:单昕昕...
  • MIKASA3
  • MIKASA3
  • 2015年01月19日 14:26
  • 961

hdu 1892 See you~(二维树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1892点击打开链接 See you~ Time Limit: 5000/3000 M...
  • xuejye
  • xuejye
  • 2017年07月13日 13:44
  • 44

HDU 1892 See you~【树状数组】

See you~ Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm...
  • u011385365
  • u011385365
  • 2013年07月30日 22:57
  • 578

二维树状数组 hdu 1892 See you~

题目给定4种操作: S x1 y1 x2 y2 询问以(x1 , y1) - (x2 , y2)为对角线的矩形的面积,但是这个对角线不一定是正对角线。A x1 y1 n 把点(x1 , y1)加上n...
  • ACM_10000h
  • ACM_10000h
  • 2015年09月01日 23:13
  • 264

See you~ (hdu1892 二维树状数组模板)

See you~
  • luyehao1
  • luyehao1
  • 2017年07月14日 14:52
  • 88

hdu 1892 See you~(二维树状数组)

See you~ 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 解题思路: 题目大意: 有很多方格,每个方格对应的坐标为(i,...
  • piaocoder
  • piaocoder
  • 2016年03月31日 17:10
  • 298

HDU-动能定理-人的降落

问题及代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:E.cpp *作 者:单昕昕 *完成日...
  • MIKASA3
  • MIKASA3
  • 2015年02月03日 14:27
  • 643

HDU 1892 See you~(二维树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1892 很明显的二维树状数组的题目,注意点细节! #include #include #incl...
  • sunrainchy
  • sunrainchy
  • 2013年12月02日 11:00
  • 385

HDOJ 1892 See you~(二维树状数组)

http://acm.hdu.edu.cn/showproblem.php?pid=1892 题意:有一个矩形书架,被分成很多个格子,刚开始的时候每一个格子都会有一本书。现在给出ADMS四种...
  • secfly
  • secfly
  • 2016年03月13日 20:48
  • 159
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组nice to see you again
举报原因:
原因补充:

(最多只允许输入30个字)