#include <iostream>
using namespace std;int main(){int stu[5] = {10,20,30,40,50};int *p1 = &stu[2];int *p2 = &stu[1];printf("isub = %ld\n",p1 - p2);//int类型移动了2位//1.char*(stu)printf("(char*)stu = %p, (char*)stu+1 = %p, (char*)stu+2 = %p, (char*)stu+3 = %p, (char*)stu+4 = %p\n",(char*)stu,(char*)stu+1,(char*)stu+2,(char*)stu+3,(char*)stu+4);printf("csub = %ld\n",(char*)p1 - (char*)p2);//char类型移动了8位//2.stuprintf("stu = %p, stu+1 = %p, stu+2 = %p, stu+3 = %p, stu+4 = %p\n",stu,stu+1,stu+2,stu+3,stu+4);//等价于//3.stu[0]printf("&stu[0] = %p, &stu[1] = %p, &stu[2] = %p, &stu[3] = %p, &stu[4] = %p\n",&stu[0],&stu[1],&stu[2],&stu[3],&stu[4]);//其实是地址位移相减;以下是向后位移N个int(4byte)地址,【即位移的int类型的个数.】printf("(stu+1) - stu = %ld\n",(stu+1)-stu);//位移1个int地址,即位移了int类型大小的个数.printf("(stu+2) - stu = %ld\n",(stu+2)-stu);//位移2个int地址   //等价于printf("(&stu[1]) - (&stu[0]) = %ld\n",(&stu[1])-(&stu[0]));//位移1个int地址printf("(&stu[4]) - (&stu[0]) = %ld\n",(&stu[4])-(&stu[0]));//位移4个int地址printf("(&stu[0]) - (&stu[4]) = %ld\n",(&stu[0])-(&stu[4]));//位移4个int地址printf("len = %ld\n",sizeof(p1));//8byte
}注意:不管是数组相邻元素地址相减,还是指针类型相减,占位符是%d表示int(占4个byte)类型说明是以int类型,也就是4个字节为单位位移,如果向前/后移动1个4字节,就说位移一位;如果向前/后移动2个4字节,则说移动2位。

C语言之数组和指针位移的本质(四十五)相关推荐

  1. c语言如何用指针操作一维字符数组,C语言中数组和指针的互操作

    C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减.当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有 ...

  2. 小白来学C语言之数组与指针

    前言:写东西一样要保存,ctrl s常按着,写了一晚上,第二天全没了,快要哭了.要不是自己在指针这里浪费了很多时间,我可能就不会重新写了,希望大家能看懂学会,别再走弯路了. 1.内存四区 . a) 代 ...

  3. 一道题目让你看出C语言的数组与指针的区别:

    文章目录 题目概述: 输入格式: 输出格式: 输入输出样例: C语言题解: 错误的运行结果: 错误问题的分析与定位: C库的malloc函数讲解: 函数原型: 函数形参: 函数的返回值: 内存的释放: ...

  4. C语言字符数组、指针总结

    一. 字符串与字符数组 c语言没有字符串类型,用字符数组存放字符串. 字符指针有以下几种: 第一种: char a='c'; char* p=&a;//将a的地址赋给字符指针p *p='d'; ...

  5. C语言:数组与指针详解

    文章概述 本文章讲述关于C语言的主要内容如下:   1.字符数组.2.一维数组与指针.3.二维数组与指针.4.字符串与指针.5.字符串指针数组 一.字符数组   定义一维数组时,系统会在内存中为其分配 ...

  6. c语言三维数组 三维指针,C语言 通过指针访问一维数组,二维数组,三维数组。...

    /** 通过指针来访问一维数组,二维数组,多维数组 */ #include const int COLS=3; const int COUNT=4; //通过一级指针,计算偏移量来遍历一维数组 voi ...

  7. 【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )

    文章目录 前言 一.数组符号 [] 与 指针 * 符号 使用效果 基本等价 二.数组首地址 与 指针 本质区别 前言 参考 [C 语言]指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方 ...

  8. C语言-一维数组与指针

    目录 1 用指针访问数组的三种方式 2 一维数组做函数的参数 2.1 方法一 2.2 方法二 3 指针自增自减运算 1 用指针访问数组的三种方式 #include <stdio.h>int ...

  9. c语言memset清空指向数组的指针_C语言中数组和指针的关系

    数组的数组名其实可以看作一个指针.看下例: 1.    int array[10]={0,1,2,3,4,5,6,7,8,9},value; 2.    value=array[0]; //也可写成: ...

最新文章

  1. 开发提交审核流程_小游戏上线发布全流程详解?
  2. 手机无法配置exchange客户端的解决方法
  3. 第12章 与Spring集成
  4. 我的QT4.5编译流水帐(转帖)
  5. (三)、Express 路由、静态文件、
  6. swift date 计算差_[Swift 设计模式] 适配器
  7. 【译】微型ORM:PetaPoco
  8. Mariadb学习总结(十二):复合语句和流程控制
  9. P1024 一道naive的二分
  10. 浅谈Mysql 表设计规范(转)
  11. The Child and Toy
  12. RS485MODBUS转PROFINET网关配置-科隆OPTIFLUX7000MODBUS通信协议电磁流量计接入西门子PLC S7-1500PROFINET以太网通讯网络配置方法
  13. 裁判文书网数据采集爬虫2021-08
  14. 杜克大学中国女博士7年奋斗历程
  15. php mysql orm_PHP基于ORM操作MySQL数据库 - strtolower
  16. 在ubuntu中查看摄像头
  17. 使用DoraCloud在Proxmox虚拟化平台搭建桌面云
  18. 项目、习惯以及Todolist的区别
  19. 高仿QQ源码 界面(3)
  20. 差分时钟、DQS与DQM - DDRx的关键技术介绍(上)

热门文章

  1. Java 静态代码块和非静态代码块
  2. JDK6和JDK7中的substring()方法
  3. 任务四十七:王牌特工 准备工作(二)
  4. 老李分享:5个衡量软件质量的标准
  5. SQL Server中CTE的另一种递归方式-从底层向上递归
  6. Linux下自动备份Oracle数据库并删除指定天数前的备份
  7. win7做wifi服务器
  8. inventor弧度怎么标注_家里房间太大,WiFi信号覆盖不了怎么办?网件新作:分身术...
  9. 000+0000 格式的时间转成 年月日
  10. 学土木结构考计算机等级考试,请教各位,我是学土木的,考计算机二级的哪个比较好?...