C语言中的指针详解

article/2025/8/29 10:08:54

1. 什么是指针

C语言中指针是一种数据类型,指针是存放数据的内存单元地址。

计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”,每个存储单元拥有一个唯一的地址。

指针变量除了可以存放变量的地址外,还可以存放其他数据的地址,例如可以存放数组和函数的地址。

2. 指针的定义和初始化

格式:数据类型符 *指针变量名[=初始地址值]。

功能:定义指向“数据类型符”的变量或数组的指针变量,同时为其赋初值。

定义说明:

1. “*” 表示定义的是一个指针变量,指针变量的前面必须有 “*” 号;

2. 在定义指针变量的同时也可以定义普通变量或数组等其它变量;

3. “数据类型符” 是指针变量所指向变量的数据类型,可以是任何基本数据类型,也可以是其他数据类型;

4. “初始地址值” 通常是 “&变量名” “&数组元素” 或 “一维数组名”,这里的变量或数组必须是已定义的;

5. 在定义指针变量时,可以只给部分指针变量赋初值;

6. 指针变量的初始化,除了可以是已定义变量的地址,也可以是已初始化的同类型的指针变量,也可以是NULL(空指针);

7. 指针变量初始化时,指针变量的“数据类型符”必须与其“初始地址值”中保存的数据的类型相同;

8. 不能用auto类型的地址去初始化static型指针。

3. 指针变量的使用

1. 给指针变量赋值

格式:指针变量=地址型表达式

“地址型表达式”即运算结果是地址型的表达式。C语言规定,变量地址只能通过取地址运算符获得,即“&”,其运算对象是变量数组元素名,运算结果是对应变量或数组元素的地址。

需要注意的是,虽然地址是一个整数,但是C语言中不允许把整数看成“地址常量”,所以此处的“地址型表达式”不能是整数。

2. 使用指针变量

格式:指针变量名

需要使用地址时,可以直接引用指针变量名。

3. 通过指针变量引用所指向的变量

格式:*指针变量名

“*指针变量名” 代表其指向的变量或数组元素,其中的“*”称为指针运算符。需要注意的是,这种引用方式要求指针变量必须已经定义且有值。

4. 指针的基本运算

1. 取地址运算符 &

取地址运算符“&”的功能是取变量的地址,它是单目运算符。取地址运算符的运算对象必须是已经定义的变量或数组元素,但不能是数组名。运算结果是运算对象的地址。

2. 指针运算符 *

指针运算符“*”的功能是取指针变量所指向地址中的内容,与取地址运算符“&”的运算是互逆的,它是单目运算符。指针运算符的运算对象必须是地址,可以是已赋值的指针变量,也可以是变量或数组元素的地址,但不能是整数,也不能是非地址型的变量。运算结果就是地址对应的变量。

 取地址运算符和指针运算符的优先级和结合性:

1. 取地址运算符、指针运算符和自增、自减等单目运算符的优先级相同;

2. 所有单目运算符的结合性为从右至左。

5. 指针的算术运算

指针变量可以进行的算术运算包括:

1. 指针变量 ± 整数;


http://chatgpt.dhexx.cn/article/EwGImm37.shtml

相关文章

C语言——指针详解(必收藏)

目录 1.什么是指针? 1.1概念 1.2指针的大小 ​ 1.3指针类型的作用 2.野指针 2.1野指针产生的原因 2.2 如何规避野指针 3.指针运算 3.1指针-整数 3.2指针-指针 3.3 指针的关系运算 4. 二级指针 5. 数组名 *6.指针数组和数组指针 6.1指针数组 *6.…

C语言指针详解

一、什么是指针 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存中的一个指定数据类…

C语言之指针详解

文章目录 1 指针1.1 简介1.2 什么是指针1.2.1 定义1.2.2 指针表示1.2.3 为什么*p&a不正确 1.3 使用指针1.3.1 简单使用1.3.2 NULL 指针1.3.3 指针算术运算1.3.3.1 定义1.3.3.2 遍历数组:递增一个指针1.3.3.3 遍历数组:递减一个指针1.3.3.4 指针的比较…

c语言—指针详解

文章目录 一、指针是什么二、指针和指针变量1.左值与右值2.两者的区别 三、指针和指针类型1.定义指针2.大小端3.指针的解引用 四、野指针野指针成因如何规避野指针 五、指针运算1.指针- 整数2.指针-指针3.指针的关系运算 六、指针和数组七、二级指针八、指针数组和数组指针1.指…

机器学习主动学习和半监督学习

一、主动学习(active learning) 学习器能够主动选择包含信息量大的未标注的样例并将其交由专家进行标注,然后置入训练集进行训练,从而在训练集较小的情况下获得较高的分类正确率,这样可以有效的降低构建高性能分类器的…

active learning主动学习

active learning 是半监督式的机器学习的一种,这种机器学习算法能够交互式地查询用户或者信息源,从而对于一个新的数据样例得到可人的输出。在统计学文献中,它有时也被称为最佳实验设计。 在这样的一种情形下:无标签的数据量很大…

深度主动学习综述2020

A Survey of Deep Active Learning 中文版仅作参考,以正式的pdf版为主。 https://arxiv.org/pdf/2009.00236.pdf 西北大学等最新《深度主动学习》全面综述论文,30页pdf abstract 主动学习试图通过标记最少量的样本使得模型的性能收益最大化。而深度学习…

每日一学-- 主动学习(active learning)

1. 在机器学习中,有监督学习、半监督学习、无监督学习。 在使用监督学习时,模型在标注的数据中学习信息,而存在的问题就是有大量的数据需要标注,非常费时费力。so主动学习为我们提供了方法,通过一定的算法找出最有用的…

一张图展示被动学习与主动学习的效率差距

一张图展示被动学习与主动学习的效率差距 起因一张图 起因 由于工作原因。最近的一段时间,又回到了大量的学习实践当中。之前的主观感受是,通过文字语音视频结合的多渠道信息获取方式学到的东西,记忆会比自己只是看文字,读文字&a…

深度学习 主动学习(Active Learning)概述、策略和不确定性度量

文章目录 主动学习概念策略基于数据流的主动学习方法基于数据池的主动学习方法基于查询的主动学习方法 不确定性度量 参考 主动学习 概念 主动学习是指对需要标记的数据进行优先排序的过程,这样可以确定哪些数据对训练监督模型产生最大的影响。主动学习不是一次为…

主动学习-综述

主动学习是机器学习(更普遍的说是人工智能)的一个子领域,在统计学领域也叫查询学习、最优实验设计”(Active learning (sometimes called “query learning” or “optimal experimental design” in the statistics literature) is a subfie…

深度学习--主动学习

主动学习简介 主动学习是指对需要标记的数据进行优先排序的过程,这样可以确定哪些数据对训练监督模型产生最大的影响。主动学习是一种学习算法可以交互式查询用户(teacher 或 oracle),用真实标签标注新数据点的策略。主动学习的过程也被称为优化实验设计…

机器学习/深度学习几种典型学习范式|主动学习

机器学习/深度学习几种典型学习范式|主动学习 主动学习(Active Learning,AL):Introduction主动学习的例子 应用场景成员查询合成流式选择抽样基于池的主动学习 查询策略框架不确定性抽样Uncertainty Sampling基于委员会的查询Query-By-Commit…

机器学习中的主动学习(Active Learning)

最近在做主动学习相关的东西,随着深入了解和学习对于某些东西有一些模糊,先将所见所感整理如下,如有不正确之处希望大佬能够指正: 1.主动学习 1.1关键问题 对于监督学习模型,足够多的已标注样例是获得高精度分类器的…

主动学习数据标注

active learning与passive(supervised) learning最大的不同是其不需要大量的专家标注样本训练模型。 主动学习是利用少量标注样本,然后由模型(Learner)主动选择hard sample返回给用户或专家(Oracle)打标签,…

浅谈主动学习(Active Learning)

1背景概述 在机器学习领域有很多学习模式,比方说监督学习、半监督学习、强化学习、无监督学习等。平时大家接触比较多的一般都是监督学习,在监督学习里面,比方说要做个人和鱼的图像分类模型,假设有200张图片,那就需要把…

深度主动学习综述(Deep Active Learning)

原文 Abstract 主动学习试图通过标记最少量的样本使得模型的性能收益最大化。而深度学习则对数据比较贪婪,需要大量的数据供给来优化海量的参数,从而使得模型学会如何提取高质量的特征。近年来,由于互联网技术的快速发展,使得我…

AL-实体抽取主动学习调研

实体抽取主动学习调研 文章目录 实体抽取主动学习调研资料前言相关文献阅读一、主动学习与自学习的中文命名实体识别算法流程图 二、DEEP ACTIVE LEARNING FOR NAMED ENTITYRECOGNITION三、Visual Active Learning for Labeling: A Case for Soundscape四、Interactive visual …

《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

主动学习简单教程及代码示例

本文是这篇文章的(翻译)简化版。 本文代码地址 已经不止一次有人说代码地址打不开,但是每次我都打得开。。这里放个阿里云的地址吧Active_Learning_Tutorial.ipynb。需要的去阿里云下载文件就行了。 建议直接看代码地址(代码地…