a[2]地址-a[0]地址 实际等于 (a[2]地址-a[0]地址)/a的类型 -- C

#include <stdio.h>

int
main()
{
	int a[3] = {0x1,0x2,0x3};
	int *p, *q;

	printf("a[0] = 0x%X\n", a[0]);
	printf("a[1] = 0x%X\n", a[1]);
	printf("a[2] = 0x%X\n\n", a[2]);

	printf("&a[0] = 0x%X\n", &a[0]);
	printf("&a[1] = 0x%X\n", &a[1]);
	printf("&a[2] = 0x%X\n\n", &a[2]);

	p = &a[0];
	q = &a[2];
	printf("p = 0x%X\n", p);
	printf("q = 0x%X\n\n", q);

	/* q - p 实际运算是(q地址(0xBFE2097C) - p地址(0xBFE20984))/sizeof(int) */
	printf("q - p = 0x%X\n", q - p);
	printf("a[q - p] = 0x%X\n", a[q - p]);
	printf("a[&a[0] - &a[2]] = 0x%X\n", a[&a[2] - &a[0]]);

}
/*
[[email protected] test_class]# ./a.out
a[0] = 0x1
a[1] = 0x2
a[2] = 0x3

&a[0] = 0xBFE2097C
&a[1] = 0xBFE20980
&a[2] = 0xBFE20984

p = 0xBFE2097C
q = 0xBFE20984

q - p = 0x2
a[q - p] = 0x3
a[&a[0] - &a[2]] = 0x3

*/

a[2]地址-a[0]地址 实际等于 (a[2]地址-a[0]地址)/a的类型 -- C

时间: 2024-10-15 12:28:09

a[2]地址-a[0]地址 实际等于 (a[2]地址-a[0]地址)/a的类型 -- C的相关文章

Swift3.0语言教程获取字符串编码与哈希地址

Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取字符串编码,分别为availableStringEncodings属性和defaultCStringEncoding属性. (1)availableStringEncodings属性可以用来获取NSString可用的字符串编码.其语法形式如下: class var availableStringEn

什么?你不知道0.0.0.0和255.255.255.255这两个地址是干嘛的?

在我们电脑的ip配置里,有静态配置 ip 地址和动态获取 ip 地址两种选择. 我敢保证绝大部分人使用的都是动态获取 ip 地址,因为如果自己静态配置的话,容易出错,例如你不小心配置了一个已经被其他人在使用的 ip 地址.所以我们一般选择的是动态获取 ip 地址.注意,这里的 ip 地址不仅仅是指主机的唯一标识,还指DNS.网关等 ip 地址. 对于动态获取 ip 地址,如果你的电脑关机重启了之后,此时可以说你的电脑如同一个初生的婴儿,啥 ip 也没有.这个时候最重要的事情就是让自己获得一个 i

为什么在JavaScript中0.1+0.2不等于0.3?

0.1+0.2不等于0.3?是不是有点颠覆你的认知,但是,在js中,是真实存在的! console.log(0.1+0.2); // 0.30000000000000004 其实这都是因为浮点数运算的精度问题. 简单来说,因为计算机只认识二进制,在进行运算时,需要将其他进制的数值转换成二进制,然后再进行计算. 由于浮点数用二进制表达时是无穷的: // 将0.1转换成二进制 console.log(0.1.toString(2)); // 0.000110011001100110011001100

为什么计算机编程语言中:0.1+0.2不等于0.3

最近在学习JS过程中发现在计算机JS时发现了一个非常有意思事,0.1+0.2的结果不是0.3,而是0.30000000000000004,但先将小数做乘法然后相加,再除回来就得到想要的0.3 我用python试了一下,发现python也是一样的,结果也是0.30000000000000004. 然后我开始信息搜集,最后找到了答案.想知道这其中的原因,要先理解这些点:二进制.指数形式.IEEE 754标准. 1.二进制 在计算机中所有的数据都是二进制形式存储的,包括整数.浮点数以及其他所有类型的数

python +ip2region IP库地址文件实现秒级查询1万不同ip归属地址

一.服务器环境介绍: 服务器硬件:4核4g内存服务器系统:centos6.9 x86_64位最小化安装 二.环境安装 参考地址:https://github.com/lionsoul2014/ip2region直接下载包到服务器上的/root目录下wget https://github.com/lionsoul2014/ip2region/archive/master.zipunzip解压unzip master.zip到此准备工作基本完成 以下都是github.com官网上的说明,我这边复制在

ipv6地址在URL中的表达方式,如何在URL地址中包含ipv6地址

摘要 本文档定义了在WWW浏览器的URL中执行的文本IPv6地址的格式.在包括Microsoft的IE,Mozilla和Lynx等几个已经被广泛安装使用的浏览器的IPv6版本中,这种格式已经被使用.并且这种格式也将被应用于服务定位协议的IPv6版本中.本文档包括了一个对在RFC2396[URL]被定义的统一资源标识符中的一般性语法的更新.为了这个预定目标,本文档明确定义了IPv6地址的语法规则并允许在统一资源标识符中使用"["和"]"符号. 1.介绍 在[ARCH]

模板语言控制往哪个地址提交时,如果不填,默认往当前地址提交,也可以用request方法获取当前地址提交

模板语言控制往哪个地址提交时,如果不填,默认往当前地址提交,也可以用request方法获取当前地址提交: 应用场景:cookie失效进入登录页面,登录后返回之前点击的页面: 假设地址为:http://127.0.0.1:8000/login_cookie/?test=/show_author/ 默认为空: request获取当前地址: 两种方式均能在视图中以GET方法获取: 获取到的值为:/show_author/ 原文地址:https://www.cnblogs.com/aizhinong/p

C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?

在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Matrix如下: int M = 3; int* Matrix = {1,2,3}; 可以看到,对于M和 Matrix ,+1运算的效果是不同的. 这个差异是因为C语言的标准中规定了 加法与减法运算对于地址的操作和对于值的操作是不同的,如下文中粗体所示: C89 3.3.6 Additive opera

100个0.1相加等于多少?

一.前言 在大家的认知过程中可能会认为计算机是不会出现计算错误的,但是实际上,依然存在程序运行后无法得到正确数值的情况.其中,最经典的就是小数运算. 二.引入 在我们的世界里面,100个0.1相加就是10,这个是没有疑问的.但是让我们来看看计算机世界的计算结果: 首先是一段计算代码: #include <stdio.h> int main(void) { float sum; int i; sum = 0; for (i=0 ;i<100;i++) { sum += 0.1; } pri

Oracle 11g(11.2.0.4)手动打补丁PSU(11.2.0.4.8)

一.准备工作 1,数据库环境操作系统版本   : Redhat 6.5 x64数据库版本     : Oracle 11.2.0.4 x64Oracle database: 11.2.0.4 2,准备内容OPatch : p6880880_112000_Linux-x86-64.zipDB PSU : p21352635_112040_Linux-x86-64.zip 仅单实例使用.OPatch下载地址:https://updates.oracle.com/download/6880880.ht