C语言初级指针应用

news2025/2/28 4:25:18

目录

一.什么是指针以及如何获取地址

二.间接运算符(解引用运算符):*

三.声明指针

四.使用指针在函数进行通信

五.变量:名称,地址和值

一.什么是指针以及如何获取地址

指针是一个值为内存地址的变量(或数据对象),正如char类型变量的值是字符,int类型变量的值是整数

那我们要如何获得一个变量的值。用&符号就可以,我们来看下例子

这里我们用%p打印num的地址(&num),地址用的是十六进制表示。

那值有了,我们该用指针变量存储这个地址了

这里我们声明了一个指向int 类型的指针p,用语句int * p表示。

这里的* 不是表示指针的意思。而是间接运算符。它表示*p的值就是一个int类型的值。至于为何叫间接运算符。我们后面会讲

然后我用int * p = #把num的地址赋给p。这里要明白一个点。ptr是变量,它是可以更换存储的地址的。但&pooh是个常量,它就是一个值地址。是无法改变的

然后我们看红色下划线,可以发现a的地址和p存储的地址是不一样的。而看到黄色部分,这里值的是p本身的地址,它的值和存储地址是不一样的。两个在概念上面完全不同,大家不要弄混淆了

二.间接运算符(解引用运算符):*

int num = 1;

int * p = #

int p_num=*p;

间接运算符*找出存储在pooh存储地址的值

所以这就相当于

p_num = num;

我们看红色括号也可以发现两者值相同,但地址是不同的。

看到这朋友你是否理解了为啥叫*为间接运算符的原因了。

在我们理解*为获得地址值后,我们在来看int * p = #首先我们已经知道了p = &num。p存储的就是num的地址。那么*p就是获得num地址上面的值。所以声名时我们用int * p;说明p解引用后指向的是一个int类型的值。如果解引用后是一个float的类型值,就用float * p;

间接运算符*优先级高于+

三.声明指针

声明指针变量时必须指定指针所指向变量的类型

指向float类型的指针就是 float * p(p是我们自定义的变量名)

格式:类型名 + * + 指针名

四.使用指针在函数进行通信

本例子,我们通过指针将两个变量存储值进行交换,我们在主函数当中传入实参x,y的地址。然后函数interchange接受这两个实参值(两个地址),然后将两个地址上面的值进行改动。

五.变量:名称,地址和值

编写程序时,可以认为变量有两个属性:名称和值。计算机编译和加载程序后,认为

变量也有两个属性:地址和值(地址就是变量在计算机内部的名称)。普通变量把值作为基本量,把地址作为通过&运算符获得的派生量,

而指针变量把地址作为基本量,把值作为通过*运算符获得的派生量


好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

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

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

相关文章

RabbitMQ相关概念介绍

这篇文章主要介绍RabbitMQ中几个重要的概念,对于初学者来说,概念性的东西可能比较难以理解,但是对于理解和使用RabbitMQ却必不可少,初学阶段,现在脑海里留有印象,随着后续更加深入的学习,就会很…

电源自动测试系统-电源模块批量自动化测试方案ATECLOUD-Power

1、测试名称 基于ATECLOUD的电源模块测试方案 2、测试目的 提升电源模块测试效率,减少测试人员成本,降低测试专业知识要求,增加数据精准度,为企业提供专业决策的数据支持,从而降本增效。 3、测试设备 示波器、电子…

20230215小结

1 t-sne 原理:利用两个向量之间的欧式距离转化成条件概率分布,可以把高维度的数据转化为低维度(1000,64)-》(1000,2),原先每个样本有64维度,转化为2维 2 swi…

linux系统编程入门

一、搭建环境 1、安装 Linux 系统(虚拟机安装、云服务器) https://releases.ubuntu.com/bionic/ 2、安装 XSHELL、XFTP https://www.netsarang.com/zh/free-for-home-school/ 3、安装 visual studio code https://code.visualstudio.com/ 4、Linu…

Unreal Engine角色涌现行为开发教程

在本文中,我将讨论如何使用虚幻引擎、强化学习和免费的机器学习插件 MindMaker 在 AI 角色中生成涌现行为。 目的是感兴趣的读者可以使用它作为在他们自己的游戏项目或具体的 AI 角色中创建涌现行为的指南。 推荐:使用 NSDT场景设计器 快速搭建 3D场景。…

一种基于加密域的数字图像水印算法的设计与实现(附Matlab源码)

一种基于加密域的数字图像水印算法的设计与实现 项目介绍 毕设项目 题目:一种基于加密域的数字图像水印算法的设计与实现 随着数字媒体技术的发展,数字媒体版权的保护得到了越来越多人的重视,数字水印技术作为数字媒体版权保护的有效手段…

通达信交易接口以什么形式执行下单的?

通达信程交易接口 以API形式来执行下单接口,一般不再需要通过接口系统之间进行连接,通过直接调用通达信dll交易函数的方式直接进行交易,包括下单,撤单,查询资金股份、当日委托、当日成交等方面都能很快的执行出来。以a…

【JDK8】MyBatis源码导入Idea

1.背景 为了更好的将MyBatis的开发设计思想带到日常开发工作,将MyBatis源码导入到本地开发工具中(idea)。我自己在导入的时候碰到几个问题,耽误了自己一点时间,这里我把它们记下来,后边的小伙伴可不要踩我的坑。 Java版本&#x…

黑帽SEO是什么?做了真的能够一直保持排名?

随着Google演算法一次又一次的更新,现在愈来愈多人重视所谓的网站SEO。但是内行的人都知道,网站要提高排名并非一天两天的事,所以有些人就会使用不法手段想借此提高排名,这也就是常听到的「黑帽SEO」。但是做黑帽SEO真的能快速提高…

【爬虫+数据清洗+可视化分析】用Python分析哔哩哔哩“狂飙”的评论数据

一、背景介绍您好,我是马哥python说,一枚10年程序猿。2023开年这段时间,《狂飙》这部热播剧引发全民追剧,不仅全员演技在线,更是符合反黑主旋律,因此创下多个收视率记录!基于此热门事件&#xf…

嵌入式开发之Vscode实用插件大全

嵌入式开发之Vscode实用插件大全① Chinese (Simplified) (简体中文) (神器)② C/C &CMake & C/C Extension Pack(神器)③ Better C Syntax④ Doxygen Documentation Generator(神器)⑤ vscode-ico…

存储类别、链接与内存管理(一)

1、一些必要的基础概念 (1)对象 从硬件的角度,被存储的每个值都被占用了一定的物理内存,C语言把这样的一块内存称为对象对象可以存储一个或多个值一个对象可能并未存储实际的值,也可能存储一个或多个值,但…

初阶函数递归经典例题(1)

1、递归实现n的k次方 2、计算一个数的每位之和(递归实现) 3、strlen的模拟(递归实现) 讲解之间我们先回顾下递归的知识点: 1、什么是递归? 程序调用自身的编程技巧称为递归。(即一个函数在其…

蓝牙耳机什么牌子的好又实惠?实惠好用的蓝牙耳机品牌

随着科技的发展,耳机领域的新品是越来越多,很多品牌如雨后春笋般涌现,耳机的样式也是层出不穷,下面小编整理了几款实惠好用的蓝牙耳机品牌。 一、南卡小音舱蓝牙耳机 参考价格:239元 单耳重:3.1g 推荐系…

用ChatGPT写一个基于ChatGPT API的对话机器人

采用的是国区的网站 Q:写一个调用chatgpt的聊天机器人的python程序 A: python import requests# 聊天机器人的API地址 url https://api.chatgpt.com/v2/query# 请求参数 params {prompt: 你好,user_key: YOUR_USER_KEY }# 发送请求 response request…

数据仓库实战

目录1、最佳实战1.1 表的分类1.2 ETL策略1.3 任务调度2、项目实战2.1 项目概述2.2 数据描述2.3 架构设计2.4 环境搭建2.5 项目开发1、最佳实战 1.1 表的分类 维度建模中表的类型:事实表和维度表 事实表又可以分为:事务事实表、周期快照事实表、累积快照…

公司项目引入这种方式,开发应用真是又快又准!

试想一下,你开足马力提了一串需求,给开发精英团队也好,给外包也行,都要等个半年甚至更久才会给到你一个满意的产品,你是否还有动力? 这还不止,业务越来越复杂,最初的需求也在随着着…

jsp医院管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 医院管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发,数据库为Mysql,使用ja…

大数据之-Nifi-Nifi的安装_启动_认识Nifi的操作台---大数据之Nifi工作笔记0002

然后我们看一下如何安装nifi 这个上一节已经说了 然后看一下环境准备,这个自己去安装就可以了,需要jdk,1.8就可以了,然后 maven安装上就可以了 然后去下载,这里下载Linux版本的 1.9.2的版本比较稳定 下载以后,避免端口冲突要修改端口默认是8080,修改为58080 然后启动很简单,看…

node.js校园快递智能仓储物流系统vue

开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 系统能够提供简洁、全面且清爽的用户界面,使操作人员可以直观明了。 系统可以实现管理员信息管理、收件人信息管理、快…