“指针+1”的理解

1、一个32位的机器,该机器的指针是多少位的?

指针是多少位只要看地址总线的位数就行了,80386以后的机子都是32的地址总线,所以指针的位数就是4个字节了。


2、指针加1,结果是对该指针增加1个储存单位。

(1)“存储单位”,指的是指针指向的数据类型所占的内存的字节数。不同类型的指针加1后,增加的大小不同。

(2)例子

int main(void)
{int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf(“%d,%d”,*(a+1),*(ptr-1));return 0;
}
此时的输出是2,5。

解释:*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5。

            &a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)

            int *ptr=(int *)(&a+1),则ptr实际是&(a[5]),也就是a+5

            &a是数组指针,其类型为 int (*)[5],a是长度为5的int数组指针,所以要加 5*sizeof(int),所以ptr实际是a[5];
            但是prt与(&a+1)类型是不一样的(这点很重要,prt指向的是整形),所以prt-1只会减去sizeof(int)

            a,&a的地址是一样的,但意思不一样:
            a是数组首地址,也就是a[0]的地址,a+1是数组下一元素的地址,即a[1],
            &a是对象(整个数组作为一个对象)首地址,而&a+1是下一个对象的地址,即a[5].


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache-apollo启动报错

启动Apollo后,进入网页版管理中心后报错:500: Server Error https://127.0.0.1:61681/console/index.html 网页抓包 报错:{"code":"500: Internal Server Error","message":"java.lang.IllegalArgumentEx…

android 标签对应的代码怎么写alignParentRight、marginRight

2019独角兽企业重金招聘Python工程师标准>>> android:layout_alignParentRight"true" LayoutParams lp new LayoutParams(mp); lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 转载于:https://my.oschina.net/zhangjie830621/blog/158899

TinyXML保存UTF-8编码的XML

最近的项目在Linux下用到了TinyXML库,但是输出xml中的中文总是显示乱码,用UltraEdit查看输出文件为ASCII编码,求助Google大神,发现只需要将tinyxml.cpp源文件中的3处useMicrosoftBOM false;改为useMicrosoftBOM true;即可输出UT…

位操作实现加减乘除

一、常见功能的位操作实现: (1)常用的等式:-n ~(n-1) ~n1; (2)获取整数n的二进制中最右边一个1:n&(-n)或者n&~(n-1),如:n010100,则-n…

【随笔】About QWERTY

QWERTY键盘排布的最初目的是为了减慢人们的打字速度从而减缓对机器的压力,虽然随着时间的推移机器的处理能力越来越强,但是人们已然习惯了QWERTY键盘的打字习惯,所以QWERTY键盘布局被保留了下来。但是有一点奇怪的是QWERTY键盘被原封不动的照…

windows系统c++多线程开发

线程的一些基本概念 一、线程的基本概念。 基本概念:线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合…

centos 下安装配置nfs服务器

1、环境centos5.6_x64iptables 关闭selinux 开启(这个好像不影响)服务端:192.168.10.150客户端:192.168.10.1522、安装yum install portmap //默认已安装yum install nfs-utils3、创建共享目录mkdir /nfsvim /etc/exports/nfs 19…

使用FTP获取RFC文档

连接FTP服务器主机: ftp FTP.RFC-EDITOR.ORG 21(21是FTP中控制连接的端口号)输入用户名:anonymous输入密码:namehost.domainRFC文档是放在in-notes/rfcxxxx.txt中的(xxxx是RFC文档的编号)&#…

XP系统安装SQL2000企业版开启1433端口

1.获得SQL2000安装包2.获得SQL2000.MSDE-KB884525-SP4-CHS.EXE/SQL2000-KB884525-SP4-X86-CHS.EXE补丁包微软官网有下载3.在SQL2000 的安装盘中找到MSDE这个目录,并且点击setup.exe安装,完成后重启。4.再次安装SQL2000客户端工具,完成后重启5…

GPU编程语言选择(OpenCL、CUDA 与C++ AMP)

1、CUDA、OpenCL与C AMP 其实在C AMP之前已经有了两个异构编程框架:CUDA与OpenCL。CUDA(Compute Unified Device Architecture)是显卡厂商Nvidia于2007年推出的业界第一款异构并行编程框架。在Nvidia的大力支持下,CUDA拥有良好的开…

初见 IsolatedStorage

IsolatedStorage 翻译过来是(隔离存储空间) 怎么理解呢,jake lin的故事讲得很好,可以拿过来借用一下 " 朝鲜人民精神文明都非常的发达, 因此上网时都不需要访问internet. 因此不可能访问我们的网络.也不能访问其他精神文明没有他们发达的国家的网络. 我们也不能访问朝鲜的…

单链表的头插法和尾插法实现代码(无头结点)

/*头指针,可以发现head是赋值为NULL,而不是head->next*/ //-----------------头插法------------------- node *head, *p; head NULL; while (……) {p (node *)malloc(……);p->data ……;p->next head;//此时第一个p的next指针是NULL,其后…

iptables的SNAT和DNAT应用

首先开启路由转发功能&#xff1a;# vim /etc/sysctl.confnet.ipv4.ip_forward 1# sysctl -p&#xff08;1&#xff09;SNAT&#xff1a;内网主机 --访问--> 外网服务器<1> 搭建模拟环境内网PC1&#xff1a;172.16.0.1/16&#xff08;Host-Only&#xff09;网关PC2&a…

[Winodows Phone 7控件详解]容器控件

在Windows Phone7中存在着多个容器控件&#xff0c;这些控件主要是用来界面的布局设置&#xff0c;以及包容多个控件时的布局设置。 一.Grid控件&#xff1a;主要用于界面的布局&#xff0c;这个和web page里的很相似&#xff0c;可以通过网格布置规划界面&#xff0c;也可以嵌…

C++ Template

引言 模板&#xff08;Template&#xff09;指C程序设计设计语言中采用类型作为参数的程序设计&#xff0c;支持通用程序设计。C 的标准库提供许多有用的函数大多结合了模板的观念&#xff0c;如STL以及IO Stream。 函数模板 在c入门中&#xff0c;很多人会接触swap(int&, …

《数据结构与算法分析》学习笔记(二)——算法分析

一、对算法分析方法的最简单的理解和使用方法 1、首先大家可能一般会被那些数学的概念搞晕&#xff0c;其实简单理解下来&#xff0c;就是假设任何语句执行的效率都是一样的&#xff0c;所以设定每一个语句的执行时间都是一个时间单位&#xff0c;那么只要计算这个程序到底执行…

Oracle--plsql异常处理

•什么是异常?Oracle中出现错误的情形通常分为编译时错误&#xff08;compile-timeerror&#xff09;和运行时错误(run-time error)&#xff0c;异常是在PL/SQL执行过程中出现的警告或错误。•异常是如何触发的?–发生了一个 Oracle 错误时–使用RAISE语句显式触发•如何处理…

再谈SQL Server中日志的的作用

简介 之前我已经写了一个关于SQL Server日志的简单系列文章。本篇文章会进一步挖掘日志背后的一些概念&#xff0c;原理以及作用。如果您没有看过我之前的文章&#xff0c;请参阅&#xff1a; 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事…

树的遍历和图的遍历的异同

一、认识的理清 1、 应该认识到“深度优先”和“广度优先”是算法思想&#xff0c;而递归是实现“深度优先”的一种方法&#xff08;深度优先可以非递归实现&#xff09;&#xff1b; 2、 深度优先搜索也叫深度优先遍历&#xff08;DFS&#xff0c;Depth_Fisrt_Search&#x…

VS2012和XE2013的关联和设置问题

1. 首先要正确安装Microsoft VisualStudio 2012 Intel Parallel Studio XE 2013&#xff0c;其中&#xff0c;先安装VS2012&#xff0c;再安装XE2013。 2.Microsoft Visual Studio 2012 Intel Parallel Studio XE 2013集成检验&#xff1a; 打开&#xff1a;开始所有程序-&…