当前位置: 首页 > news >正文

每日一题:用c语言中指针实现除2操作

目录

一、要求

二、实现代码

三、实现结果

四、关于指针的相关知识


 一、要求

二、实现代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>  
void change(int *i) {*i=*i/2;
}int main() {int i;printf("请您输入一个整数:");scanf("%d", &i);change(&i);printf("这是除2后的结果:%d", i);return 0;
}

三、实现结果

 

四、关于指针的相关知识

1.取地址操作符与取值操作符
        取地址操作符为&,也称引用,通过该操作符我们可以获取一个变量的地址值;取值操作符为*,也称解引用,通过该操作符我们可以得到一个地址对应的数据。

2.指针本质

        指针与指针变量是两个概念,一个变量的地址称为该变量的指针”。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),那么称它为“指针变量”。

3.对于该代码的分析:

①指针的定义和声明:
int *i:在change函数的参数中,i是一个指向整数的指针。int指定了指针所指向的数据类型,而*是取地址运算符的符号,在这里它表示i是一个指针。
②指针作为函数参数:
当我们调用change(&i);时,我们传递了变量i的地址给change函数。&i是获取变量i在内存中的地址。
在change函数内部,*i表示对指针i所指向的内存位置进行解引用,即获取该位置的值。通过解引用和赋值操作*i = *i / 2;,我们实际上修改了指针i指向的整数值。
③通过指针修改变量的值:
change函数中的*i = *i / 2;语句修改了指针i指向的值。由于我们传递的是变量i的地址,因此main函数中的i的值也被修改了。
④指针在函数调用中的效果:
调用change(&i);后,main函数中的i的值被除以2,因为change函数直接操作了i在内存中的值。这就是指针传递在C语言中的强大之处,它允许一个函数修改另一个函数中变量的值。
⑤指针和数组:
虽然这个例子没有直接涉及数组,但需要指出的是,在C语言中,数组名在大多数情况下会退化为指向数组首元素的指针。因此,你可以通过指针来访问和修改数组元素的值。


结束~

相关文章:

  • Centos7安装Docker与Docker-compose【图文教程】
  • Flutter iOS上架指南
  • 【JAVAEE学习】探究Java中多线程的使用和重点及考点
  • Python语言例题集(010)
  • 苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)
  • vue 数据埋点
  • Node.js入门
  • 韩顺平 | 零基础快速学Python
  • UE RPC 外网联机(1)
  • 《极客时间TonyBai go语言第一课》学习笔记
  • 在 Jupyter Notebook 中切换环境
  • jupyter Notebook 默认路径修改
  • 正弦实时数据库的应用(1)-数字孪生
  • 自动化分享----pywinauto
  • 内存和网卡压力测试
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Javascript Math对象和Date对象常用方法详解
  • node-glob通配符
  • OSS Web直传 (文件图片)
  • vue 个人积累(使用工具,组件)
  • XML已死 ?
  • 多线程事务回滚
  • 蓝海存储开关机注意事项总结
  • 协程
  • 自定义函数
  • linux 淘宝开源监控工具tsar
  • 仓管云——企业云erp功能有哪些?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ###C语言程序设计-----C语言学习(3)#
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (4)事件处理——(7)简单事件(Simple events)
  • (多级缓存)缓存同步
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (论文阅读40-45)图像描述1
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (十一)手动添加用户和文件的特殊权限
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转) ns2/nam与nam实现相关的文件
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)德国人的记事本
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ***监测系统的构建(chkrootkit )
  • .naturalWidth 和naturalHeight属性,
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net web项目 调用webService
  • .netcore 获取appsettings
  • .net反编译的九款神器