快速理解C语言——指针

2023-05-16

1、地址和内存

把值存在内存中,内存就给每一个值分配一个地址:

100 104 108 112 116就是每个值分别对应的地址;

给每个内存地址起个别名,就是:变量

2、值和类型

如下,是我们声明的变量:

int   a = 112;
int   b = -1;
float c = 3.14;
int  *d = &a;
int  *e = &c;

值的类型并不取决于它本身,而是取决于它被使用的方式,当 c = 1078523331,被使用成整型时,它就是整型,被使用成浮点型时,就是浮点型。

3、指针变量的内容

d =  a 变量=内存地址;        e = c变量=内存地址;

*d = a地址中存的数:112; e = c地址中存的数:3.14

 

 4、指针的初始化

(1)错误的初始化:

 给*p这个变量的地址中重新写入了1这个值,会导致意想不到的危险结果。

int *p; 
*p = 1;  

(2)正确的初始化:

int* p;
int i;
 p = &i;
*p = 13;

指针变量声明后,必须先让它指向一个分配好的地址,再进行读写,这叫做指针变量的初始化。

(3)为了防止错误的指针初始化,可以如下:

int* p = NULL;

5、指针的移动

short* j;
j = (short*)0x1234;
j = j + 1; // 0x1236

         j     的地址是   0x1234

        j+1  的地址是   0x1236,

        因为一个单位的short类型占据两个字节的宽度,所以相当于向高位移动两个字节。

6、指针与指针的减法

       相同类型的指针允许进行减法运算,返回它们之间的距离,即相隔多少个数据单位。

short* j1;
short* j2;

j1 = (short*)0x1234;
j2 = (short*)0x1236;

ptrdiff_t dist = j2 - j1;
printf("%d\n", dist); // 1

 j1j2是两个指向 short 类型的指针,变量dist是它们之间的距离,类型为ptrdiff_t,值为1,因为相差2个字节正好存放一个 short 类型的值。

7、指针的加法运算(非法,不可取)

指针只能与整数值进行加减运算,两个指针进行加法是非法的

unsigned short* j;
unsigned short* k;
x = j + k; // 非法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速理解C语言——指针 的相关文章

  • curl用法2

    CURLOPT FTPSSLAUTH The FTP authentication method when is activated CURLFTPAUTH SSL try SSL first CURLFTPAUTH TLS try TLS
  • 简单小实验——串口控制LED灯(HAL库)

    硬件设备 STM32F103ZET3开发板 STLink 功能实现 发送ON LED亮 发送OFF LED灭 其他指令串口发送error 实验过程 波特率设置为115200 数据位8 奇偶校验位None 停止位1 这里我采用的是中断的方式去
  • sudo apt-get update报错【错误:5 http://packages.ros.org/ros/ubuntu xenial InRelease】

    sudo apt get update报错 错误 5 http packages ros org ros ubuntu xenial InRelease 解决办法 xff1a ros的wiki官网 xff0c 更新公钥 网址http wik
  • windowns10下安装MySQL

    安装时参考一下这个链接 xff0c 亲测可用 https blog csdn net qq 45173404 article details 107369405 fps 61 1 amp locationNum 61 2
  • Semi-join在Greenplum中的三种实现方式

    Semi join xff08 半连接 xff09 是用来处理外表的记录是否在内表中存在与其匹配的行 xff0c 而无需考虑匹配行的条数 xff0c 半连接的返回结果集仅使用外表数据集 xff0c 使用场景如 xff1a in exists
  • C#在不同VS版本切换时报错未能找到类型或命名空间名称MySQL

    C 未能找到类型或命名空间名称MySQL 在尝试各种方法无效后 xff0c 通过下方链接第三种情况解决问题 https blog csdn net li gege article details 103416210 utm medium 6
  • Lipschitz 条件或者Lipschitz连续

    https blog csdn net tanga cc article details 86362897
  • STM32F4开发板学习笔记一

    STM32F4是由ST xff08 意法半导体 xff09 开发的一种高性能微控制器 xff0c 之前学习过51单片机的相关知识 xff0c 现在看STM32F4的芯片 xff0c 不得不说它强大的外设功能 xff0c 还有就是固件库 对于
  • 类的三种继承方式

    类的继承方式 公有型 xff08 public xff09 保护型 xff08 protected xff09 私有型 private xff0c 访问控制修饰符也有public protected private3种类型 继承方式不同 x
  • C++ 中在函数的前面加上static的作用

    在一般的函数前面加上static 作用是 xff1a 加了static后表示该函数失去了全局可见性 xff0c 只在该函数所在的文件作用域内可见 当函数声明为static以后 编译器在该目标编译单元内只含有该函数的入口地址 没有函数名 其它
  • 网络字节序跟主机字节序有什么区别

    网络字节序跟主机字节序有什么区别 xff0c 这是我16年9月份校招面试腾讯被问到的一个问题 xff0c 也是Linux服务器开发岗常考的面试题 字节序分为大端字节序和小端字节序 大端字节序是指一个整数的高位字节 xff08 32 31bi
  • 不使用strcat函数,实现两个字符串连接

    设计思路 xff1a 1 首先我们要找到目标字符串的结尾 xff0c 即 0 处 2 然后我们再依次把源字符串依次添加到目标字符串的结尾即可 实现源码如下 xff1a span class token macro property span
  • 使用环形缓冲区ringbuffer实现串口数据接收

    文章目录 1 ringbuffer简单介绍2 ringbuffer的代码实现2 1 ringbuffer数据结构定义2 2 ringbuffer初始化2 3 ringbuffer写数据2 4 ringbuffer读数据 3 在串口中使用ri
  • 结构体(struct)

    什么是结构体 结构是程序员定义数据类型 xff0c 与类非常相似 它们有数据成员和函数成员 xff0c 虽然相似 xff0c 但是有许多区别 xff0c 区别如下 xff1a 类是引用类型二结构是值类型 结构是隐式密封的 xff0c 这意味
  • 【C语言】——结构体进阶:结构体的内存对齐(超详细)

    前言 xff1a 上一篇已经讲了结构体的基本用法 相信各位小伙伴以经学会怎么使用 但是还有一个问题没有弄明白 结构体到底多大 xff0c 占内存空间多不多 xff0c 以经系统到底怎么访问结构体内的数据的 接下来 xff0c 详细分析一下结
  • 【HTTP】摘要认证 Digest access authentication

    第三方接口对接 xff1a 摘要认证 Digest access authentication HTTP认证方式 xff1a BASIC 认证 xff08 基本认证 xff09 xff1b DIGEST 认证 xff08 摘要认证 xff0
  • 自己编译安装OpenCV (linux/windows)

    简单介绍一下OpenCV OpenCV 是 Open Source Computer Vision Library 的简称 xff0c 在计算机视觉领域中是一个非常重要的开源库 xff0c 该库使用的是BSD开源协议 xff0c 这个开源协
  • 基于TCP的项目学习历程(一)实现简单的socket请求。瞎扯的,不要评论。

    毕业至今不到两年 xff0c 但从大四刚开始就在外面开始从事开发工作了 但是一直从事的WEB项目的开发 xff0c 一直没啥长进 最近由于需要 xff0c 需要学习基于TCP的服务器开发 xff0c 由此决定 xff0c 写点东西 xff0
  • laravel框架如何生成Authorization值

    1 xff0c 创建密码授权客户端 在laravel当前目录执行 php artisan passport client password 生成如下值 Client ID 11 Client Secret fOxGavTYTJFP7Eqo0
  • eclipse mysql 数据库报错 com.mysql.jdbc.Driver

    eclipse 项目使用mysql数据库 报一下错误 Caused by java lang ClassNotFoundException com mysql jdbc Driver 解决方法 xff1a 1 xff1a 首先查看项目中是否

随机推荐

  • eclipse svn 报错 文件夹已经不存在

    最近做项目用eclipse 遇到个很奇怪的问题 xff0c 前几天svn还是可以用的 xff0c 突然一下子不能用了 xff0c 于是网上各种找解决方法啊 xff0c 终于问题解决了 xff0c 总结一下 查看svn报错信息 xff1a s
  • Java 提供接口供其它应用调用

    64 author 会员 接口类 相关参数协议 xff1a 00 请求失败 01 请求成功 02 返回空值 03 请求协议参数不完整 04 用户名或密码错误 05 FKEY验证失败 64 Controller 64 RequestMappi
  • H5 下载文件到本地

    H5 下载文件到本地 其实 xff0c 目前下载文件到本地有很多中方法 xff0c 不管是 JavaScript 或者 jQuery 也好 xff0c 都有各色各样的方法 xff0c 都可以做的到 xff0c 在这里我介绍下我发现的一个比较
  • Javaweb QQ第三方登录

    这是第三方登录的第二篇 xff0c 关于web接入微博第三方登录可以参考我之前的博文 xff0c 之前的博文比较详细的讲解了该如何进行第三方登录的申请和准备工作 http blog csdn net cwfjimogudan article
  • vmware 虚拟机启动失败, Intel VT-x 处于禁用状态

    错误提示 xff1a 已将该虚拟机配置为使用 64 位客户机操作系统 但是 xff0c 无法执行 64 位操作 此主机支持 Intel VT x xff0c 但 Intel VT x 处于禁用状态 如果已在 BIOS 固件设置中禁用 Int
  • java 35 个 Java 代码性能优化总结

    前言 代码优化 xff0c 一个很重要的课题 可能有些人觉得没用 xff0c 一些细小的地方有什么好修改的 xff0c 改与不改对于代码的运行效率有什么影响呢 xff1f 这个问题我是这么考虑的 xff0c 就像大海里面的鲸鱼一样 xff0
  • 基于51单片机超声波红外避障语音导盲仪设计(全套资料)

    基于51单片机的超声波红外避障语音导盲仪设计 本系统采用STC89C52单片机 43 4位高亮白色LED灯 43 红外避障传感器电路 43 超声波电路 43 光敏电阻模块 43 语音报警电路 43 震动电路 43 液晶1602电路 43 电
  • linux 解压zip压缩包命令

    unzip 文件名 zip d 解压位置 例如 xff1a unzip 微信 zip d demowx
  • linux 文件授权命令

    文件授权 chmod 43 x sh
  • linux tomcat常用命令

    startup sh 启动tomcat shutdown sh 关闭tomcat ps ef grep tomcat 查看Tomcat运行 kill 9 4723 杀进程 tail f catalina out 查看tomcat运行日志 c
  • linux redis常用命令

    flushall 清空redis缓存 redis cli 进入redis xff08 需要进入redis的安装目录下 xff09 get key 查找key del key 删除key
  • java DateUtils时间工具栏

    package com eeye common utils import org apache commons lang3 time DateFormatUtils import java text ParseException impor
  • unity3d:Astar寻路,A星,A*,二叉堆优化Open表

    原理视频 油管 xff1a https youtu be i0x5fj4PqP4 别人的B站翻译 xff1a https www bilibili com video BV1v44y1h7Dt spm id from 61 333 999
  • TCP/IP 、HTTP、Socket的区别与联系

    1 Socket和http的区别 http xff1a 如何封装数据 xff1b 基于TCP协议 xff0c 简单的对象访问协议 xff0c 对应于应用层 xff1b xff08 货物 xff09 tcp协议 xff1a 数据在网络中的传输
  • 【亲测一次成功】将本地代码上传到Gitee码云

    1 在Gitee码云上创建仓库 2 在本地新建一个文件夹 3 右击新建的文件夹 xff0c 使用git bush here 4 输入 git init 5 输入 git remote add origin 43 仓库地址 6 输入 git
  • keil5打开工程报错:error:not found device

    1 error not found device 解决方法 xff1a 将Project文件夹中的工程扩展名由 uvproj改为 uvprojx 原因 xff1a 前提是所有的库安装都是正常且正确的 xff0c 所以应该是如下问题 xff1
  • STM32学习笔记:IWDG_独立看门狗

    1 简介 独立看门狗就是一个12位的递减计数器 xff0c 最大值0xFFF xff1b 计数器的值从某一个值减到0时 xff0c 系统产生一个复位信号 xff08 IWDG RESET xff09 xff1b 在计数器没减到0之前 xff
  • 基于单片机避障导盲智能拐杖控制设计(毕设资料)

    本设计研究为盲人提供行走时 xff0c 遇到前方障碍物提前躲避的智能避障预警系统 以AT89S52单片机作为核心处理器 xff0c 采用超声波回波时间差测量人与物体之间的安全距离 xff0c 实现了提前预警使用者避让障碍物 xff0c 起到
  • Matlab:excel文件 转 txt文件 (只需2行代码)

    亲测有用 xff0c 只需两行代码 xff0c 将EXCEL文件 xff0c 转换成txt文件 xff1a Data 61 readtable 39 TEST xls 39 writetable Data 39 test txt 39 ex
  • 快速理解C语言——指针

    1 地址和内存 把值存在内存中 xff0c 内存就给每一个值分配一个地址 xff1a 100 104 108 112 116就是每个值分别对应的地址 xff1b 给每个内存地址起个别名 xff0c 就是 xff1a 变量 2 值和类型 如下