c入门第十篇——指针入门

news2024/11/23 15:49:43

一句话来说: 指针就是存储了内存地址值的变量。
在前面讨论传值和传址的时候,我们就已经开始使用了指针来传递地址。
在正式介绍指针之前,我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道,每个房子都有自己的地址,叫内存地址。在大多数计算机使用 8 位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。下图简单展示了一下内存编址。
在这里插入图片描述
在C语言中,每个变量都存储在内存中的一个位置上,这个位置可以通过地址来访问。
如何获取变量的地址呢?用取址运算符 &来获取。
那获取的这个地址存储在哪里呢?指针。一个指针变量就是存储了内存地址值的变量。
有了地址之后,如何读取地址上的数据呢?可以用解引用运算符 * 来获取。
总结来说有几个重要的概念:
1. 内存地址:指示了变量存储在内存中的确切位置。
2. 指针变量:存储了内存地址值的变量。
3. 取址运算符(&):用取址运算符 & 来获取一个变量的内存地址。
4. 解引用运算符(*):用解引用运算符 * 来获取指向地址上存储的数据。
示例:

int var = 10; // 一个普通的整数变量
int *ptr = &var; // 一个指针变量,存储了var的地址

printf("var的值: %d\n", var); // 输出 var 的值
printf("var的地址: %p\n", &var); // 输出 var 的地址
printf("ptr存储的地址: %p\n", ptr); // 输出 ptr 存储的地址(即 var 的地址)
printf("ptr存储的地址: 0x%lx\n", ptr); // 输出 ptr 存储的地址(即 var 的地址)
printf("ptr解引用的值: %d\n", *ptr); // 通过 ptr 指针解引用访问 var 的值

在这个示例中,var 是一个普通的整数变量,ptr 是一个类型为 int *(指向int的指针)的指针变量,它存储了 var 变量的地址。通过 *ptr 我们可以访问 var 变量的值,尽管我们并没有直接使用 var 这个变量名。
总的来说指针的用途如下:
● 指针存储内存地址。
● 指针可以间接访问和操作内存中的数据。
● 指针可以使函数能够修改接收到的变量(传址,上一节讲述到)。
● 指针可以用于动态内存分配。
在C语言中,任何一个变量和函数类型,都可以有对应的指针。
这里只是简单介绍了一下指针的概念,指针与数组的关系比较密切,关于指针的使用,我们在后续介绍数组的时候,会详细介绍。

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

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

相关文章

中国电子学会2019年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(选择题、判断题)

一、单选题(共 25 题,每题 2 分,共 50 分) 1.怎样修改图章的颜色?( ) A. 只需要一个数字来设置颜色 B. 设置 RGB 的值 C. 在画笔中设置颜色、饱和度、亮度 D. 在外观中设置或修改角色颜色特效 2.以下程序的执…

数据分析入门指南:用 Python 开启数据之旅

文章目录 前言发现宝藏为什么选择 Python 进行数据分析?准备工作数据分析基础1. 数据加载2. 数据探索3. 数据清洗4. 数据可视化 探索更多可能性好书推荐总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。…

接口测试06 -- pytest接口自动化封装Loggin实战

1. 接口关键字封装 1.1 基本概念 接口关键字封装是指:将接口测试过程中常用的操作、验证封装成可复用的关键字(或称为函数、方法),以提高测试代码的可维护性和可复用性。 1.2 常见的接口关键字封装方式 1. 发送请求:封装一个函数,接受参数如请求方法、URL、请求头、请求…

【开源】SpringBoot框架开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

【java基础题型】录入3位数,求每一位是?

\t 制表符,用于整到8个格子 Scanner类,导入Scanner包(1),代码里导入Scanner类写录入,调用录入的对象的方法 通用求个位数,%10即可,余数不会小于除数 package java录入3位数;import java.util.Scanner; …

Stable Diffusion 模型下载:RealCartoon-Realistic - V13

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

npm ERR! network This is a problem related to network connectivity.

问题详细描述 PS D:\ALearnBlog\shiyi-blog\blog-web> npm install -g vue/cli npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/vue%2fcli failed, reason: connect ETIMEDOUT 104.1…

1【算法】——最大子数组问题(maximum subarray)

一.问题描述 假如我们有一个数组,数组中的元素有正数和负数,如何在数组中找到一段连续的子数组,使得子数组各个元素之和最大。 二.问题分析 分治法求解: 初始状态: low0;highA.length-1;mid&am…

绞杀者模式

来自:https://martinfowler.com/bliki/StranglerFiqApplication.html 逐步用新的架构代理老的部分 绞杀着模式对于老久庞大,难以改造的遗留系统是比较适用的 总结: 老的不改,建新的新的搞完,杀老的

BUGKU-WEB 计算器

题目描述 计算正确即可得到flag,先看看场景: 解题思路 先输入正确答案,发现只能输入一位数那应该是设置了输入的最大长度是一所以需要我们把这个限制解除就行了呗 相关工具 F12大法 解题步骤 在场景界面按下F12,找到对应的标签右键进行…

【C语言】实现单链表

目录 (一)头文件 (二)功能实现 (1)打印单链表 (2)头插与头删 (3)尾插与尾删 (4) 删除指定位置节点 和 删除指定位置之后的节点 …

力扣(LeetCode)数据结构练习题

今天来分享两道力扣(LeetCode)的题目来巩固上篇时间复杂度和空间复杂度的知识,也就是在题目上加上了空间复杂度和时间复杂度的限制。 目录 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素&#xff0c…

双场板功率GaN HEMT电容模型以精确模拟开关行为

标题:Capacitance Modeling in Dual Field-Plate Power GaN HEMT for Accurate Switching Behavior(TED.16年) 摘要 本文提出了一种基于表面电位的紧凑模型,用于模拟具有栅极和源极场板(FP)结构的AlGaN/G…

IDEA Ultimate下载(采用JetBrain学生认证)

IDEA Ultimate版本下载 Ulitmate是无限制版(解锁所有插件,正版需要付费。学生可以免费申请许可)Community是开源社区版本(部分插件不提供使用,比如Tomcat插件。免费) 我们将通过学生认证获取免费版。 Je…

Linux第50步_移植ST公司的linux内核第2步_编译ST公司的linux源码和修改网络驱动

1、修改“linux-5.4.31”目录下的“Makefile” 1)、使用VSCode打开“linux-5.4.31.code-workspace” 2)、点击“linux-5.4.31”目录下的“Makefile” 3)、点击“编辑”,点击“查找”,输入“CROSS_COMPILE回车”,找到“ARCH ? $(SUBARCH)”…

【Linux学习】线程详解

目录 十八.多线程 18.1 线程与进程 18.2 内核视角看待创建线程与进程 18.3 线程优缺点总结 线程的优点: 线程的缺点: 线程的用途: 18.4 线程与进程的联系 十九.线程控制 19.1 POSIX线程库 19.2 线程创建 19.3 线程等待 19.4 线程终止 19.5 线…

【后端高频面试题--Nginx篇】

🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Nginx篇 什么是Nginx?为什么要用Nginx?为什么Nginx性能…

揭秘:15条黄金法则,让你的GPT聊天提示效率翻倍!(一)

你的 ChatGPT 响应的好坏完全取决于你使用的ChatGPT 提示。 事实是,ChatgPT对于潜在客户开发、内容创建甚至外展都非常有效。 但大多数人只是使用人工智能来创建内容。 当然,它有时可以产生一些纯文本。也就是说,如果你只使用正确的提示。…

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

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

FPGA_工程_基于rom的vga显示

一 框图 二 代码修改 module Display #(parameter H_DISP 1280,parameter V_DISP 1024,parameter H_lcd 12d150,parameter V_lcd 12d150,parameter LCD_SIZE 15d10_000 ) ( input wire clk, input wire rst_n, input wire [11:0] lcd_xpos, //lcd horizontal coo…