关于指针

noip2014到2017初赛普及组看程序写结果、完善程序 一晃又是noip2018了 今天先进行普及组初赛摸底 计划做两套题(noip2016、noip2014,这两套题比较中规中矩),分析一下大家的知识点缺陷,然后每个人再进行有针对性的学习。 重点是 看程序写结果,完善程序 noip2016的题目相对简单,又有一些小陷阱,比较适合提醒大家注意细节 二十二届 2016 一、选择 二分: 14. 给定含有 n 个不同的数的数组 L=<... 阅读详情

#关于指针关于指针关于指针


###首先,我们下来了解一下地址这个概念
####地址:C程序中的变量在内存中占有一个可表示的存储区,每一个存储区是有若干个字节组成,
####每一个字节都有自己的地址,而一个存储区的地址就是该存储区中第一个字节的地址
C这门语言允许在程序中使用变量的地址
( 通过地址运算符&可得到)
例如:
int x;则x的地址就是&x
*:解引用操作符
&:取地址操作


###之后,我们要知道指针是什么.
指针:一个变量的指针就是该变量的地址(指针就是地址)
指针变量:存放变量地址的变量,它用来指向另一个变量
%p可输出指针的值
就例如:

int a,*p1;
//注意: 指针变量是p1 , 不是*p1 (在变量定义时, * 号表示该变量是指针变量 ) 
a=233;
p1=&a;//这时p1就指向了a的地址(也可以理解为p1就是a的地址)
pritnf("%d\n",*p1);//*p1就是p1指向的地址上的值,输出p1指向的地址上的值,即a的值,即233
printf("%p\n",p1);//输出p1的值,即a的地址

###&*p -> &(p) -> &a
###
&a -> *(&a) -> p -> a
###注意:1、p与
p不同, p是指针变量, p的值是p所指向的变量的地址 *p 是p 所指向的变量 , *p的值是p所指向的变量的值
###2、引用指针变量时的 * 与 定义指针变量时的 * 定义变量时的 * 只是表示其后的变量是指针变量 (引用自指针某不知名指针ppt)


###下面我们来做一道例题:
(NOIP2015提高组阅读程序写结果第2题)

#include<iostream>
using namespace std;
void fun(char *a,char *b){
	a=b;
	(*a)++;
}
int main(){
	char c1,c2,*p1,*p2;
	c1='A';
	c2='a';
	p1=&c1;
	p2=&c2;
	fun(p1,p2);
	cout<<c1<<c2<<endl;
	return 0;
}
输出______

###解析:
这里定义的指针变量指向char类型(虽然不是指向int类型,但本质上还是一样的).
p1指向c1的地址;p2指向c2的地址;
那么我们不妨设c1的地址为1000,c2的地址为1001
则p1就是1000,p2就是1001
通过fun函数将两个两个指针变量p1,p2传入;
则fun中的a就指向了p1指向的地址(即c1的地址即1000),b就指向了c2的地址(即1001).
这时进行赋值语句a=b.那么a的值就变成了1000.
之后(*a)++,将a指向的地址上的值++,即将1001上的‘a’++,即将a变成b
调用fun函数后,1000上的值(即c1的值)还是’A’,而1001上的值(即c2的值)变成了‘b’.
(你可能会问p1与p2在调用fun函数前后是否改变了.实事证明它们并没有改变,因为函数中只是将形参a的值变成了b,而实参p1并没有改变(这样讲可以懂吗?ლ(╹◡╹ლ)),就是说只有函数中的a在函数中发生了改变,而外界并没有受到影响)

故输出为 Ab

###我们再来看一道例题:
(NOIP2014提高组单项选择题第11题)
有以下结构体说明和变量定义,如图所示,指针p,q,r分别指向一个链表中的三个续结点。现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是( ).
A. q->next = r->next; p-> next = r; r->next = q;
B. p->next = r; q->next = r->next; r->next = q;
C. q->next = r->next; r->next = q; p->next = r;
D. r->next = q; q->next = r->next; p->next = r;

我也不想多说了
就注意几点:
在D中的第二条语句中q->next=r->next中的r->next已经发生了变化,已经变成了q,所以执行该语句后,
q->next=q而不是一开始时r-next

故答案为D


##**总结一下吧:**其实多模拟以下指针的过程,或是做做实验,敲敲代码,把你不懂的交给程序,在从程序输出的结果出发,思考为什么会这样.这样就能慢慢地理解了

MATLAB控制信号发生器(USB-GPIB-HS)GPIB仪器控制教程(含matlab代码) 自动化测试时需要自动产生信号,通过matlab控制信号发生器的频率与功率,以实现自动化信号生成输出 阅读详情

相关推荐

浅谈MOS管的发热原因和解决办法

解读一下开关管发热原因,解决方案和开关损耗测试。

qq_45508321的博客 1万+

char * 与char []区别总结

1.先上结论 c++代码里头经常见到char * 与char []的写法,这两种写法都可以表示一个字符串。比如: void charcode() { char* a = "c1"; char b[] = "c2"; printf("a=%s, b=%s", a, b); } 上面这段代码,最后输出的结果为 a=c1, b=c2 所以这两种方式都可以表示字符串,那么区别到底是什么?我们先说结论,后面再来分析: char * 这种方式表示常量指针,char[] 这种表示指针常量! 2

bitcarmanlee的博客 2万+

Cadence Virtuoso VIVA波形分析:从背景色修改到线宽调整的完整指南

本文详细介绍了Cadence Virtuoso VIVA波形分析工具的核心使用技巧,包括背景色修改、线宽调整等高级功能。通过具体操作步骤和配置方法,帮助工程师优化波形显示效果,提升工作效率。特别强调了与Calculator组件的配合使用,以及专业波形图的输出技巧。

weixin_27330481的博客 621

保证正确率60%以上

NOIP 2016(第二十二届) 1、//考察基本的while循环,求最大和最小值 #include <iostream> using namespace std; int main(){ int max,min,sum,count=0; int tmp; if (tmp==0) return 0; max = min = ...

weixin_30530523的博客 1081

思科路由器IPv6各种路由协议配置

思科路由器IPv6路由协议配置:1、静态路由配置;2、默认路由配置;3、RIPng路由配置;4、OSPFv3路由配置。

weixin_41687096的博客 6543

OpenWrt虚拟机磁盘扩容实战:从SquashFS到ext4的完整避坑指南

本文详细介绍了OpenWrt虚拟机磁盘扩容的完整流程,重点对比了SquashFS和ext4文件系统在扩容操作上的关键差异。通过五步安全迁移法和直接分区调整方案,帮助用户有效解决磁盘空间不足问题,同时提供高级技巧和故障排除指南,确保扩容过程顺利无坑。

weixin_29251131的博客 229

C语言指出下列程序的错误,c语言易错题整理分享二

26.以下叙述中不正确的是:A.C语言中的文本文件以ASCⅡ码形式存储数据B.C语言中对二进制文件的访问速度比文本文件快C.C语言中,随机读写方式不适用于文本文件D.C语言中,顺序读写方式不适用于二进制文件27.设有以下定义:structss{intinfo;structss*link;}x,y,z;且已建立如下图所示链表结构:请写出删除点y的赋值语句是x.link=y....

weixin_39690963的博客 1668

华为OD机试双机位C卷:打印机队列 (C++/Py/C/Java/Js/Go)

华为OD机试双机位C卷 打印机队列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 打印机队列。

qq_45776114的博客 1793

为什么要用指针,什么时候该用指针,什么时候该用指针的指针

什么是指针,什么时候要用指针,什么时候要用指针的指针,指针传参时的注意事项,C语言传递参数的实质,内存分配

Diode的博客 6296

微信小程序 - 详细实现可移动悬浮按钮,全屏悬浮元素图标可拖动拖拽并自动吸附边缘,微信小程序实现悬浮球吸附边缘+计算靠边靠拢效果(详细代码,拖拽中途放手,靠左就自动跑到屏幕左侧,反之靠右跑到屏幕右侧)

微信小程序,vue2,vue3,微信小程序悬浮功能小按钮,自动吸附边缘效果,微信小程序之可拖动悬浮按钮的实现,如何实现靠近边缘自动吸住功能,小程序右下角的悬浮效果,实现可拖动悬浮图标,自动向两边靠拢,悬浮按钮的实现,微信小程序悬浮球效果,微信小程序(可拖动悬浮按钮)当靠近屏幕边缘时会磁吸靠近,如何实现全局悬浮按钮,悬浮球判断吸附在左右,全屏悬浮能拖着走,小程序怎么做悬浮图标靠近左右两侧能吸附住,悬浮菜单按钮,悬浮球可拖拽,全局悬浮球,全局悬浮框,实现悬浮按钮可拖动,自动吸附边缘效果,若按钮此时位于页面中间偏

🏆 前端领域优质创作者 1万+

【OpenClaw从入门到精通】第26篇:从0到1构建OpenClaw二次发行版——企业专属AI平台实战指南(2026实测)

本文基于OpenClaw 2026.3.7开源内核,聚焦企业级AI平台的二次发行构建,从技术原理、实操流程到商业落地提供完整方法论。核心围绕“内核层-能力层-产品层”三层架构,详解源码编译、私有化部署、企业级特性开发(数据合规、国产化适配、业务系统集成)、产品化包装等关键步骤,并通过审计行业“智审助手”虚拟实战案例具象化落地路径。文章兼顾新手入门与进阶提升,提供可直接复用的代码、配置文件及执行结果,解决企业对AI Agent“开箱即用”“数据不出域”“业务适配”的核心诉求,助力开发者快速打造企业专属AI平台

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 711

指针和指针变量

如果不初始化,p由可能指向任何地方,这种指针称之为野指针,通过野指针去改变指向的不确定的地址的行为是很危险的。对于使用钥匙打开房间A和房间B的效果是一致的,但是内容的交换要比钥匙的交换开销要大得多!①可以进行的算术运算,只有以下几种:px±n,px++/++px,px–/–px,px-py。指针变量pnum的值就是变量num的地址,指针与指针变量的区别,就是变量值与变量的区别。所以在定义指针变量的时候,如果暂时没有明确的指向,对其一般初始化为NULL(空指针)对没有指向的指针变量进行操作,是很危险的事情。

cai88453626的博客 7468

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深入了解指针,指针数组,数组指针。

大家可能听说过这样一句话,没学过指针就是没学过C语言。指针确实时C语言的一大特色,更是C语言的一大核心。但是指针的学习也没有大家想象的这么难。今天就带大家一起来深入学习一下指针。...

qq_63943454的博客 1722

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

指针 指针数组 指针数组的指针 数组指针 数组指针的数组 函数指针 指向函数指针数组的指针

指针 指针数组 指针数组的指针 数组指针 数组指针的数组 函数指针 函数指针数组 指向函数指针数组的指针

zhang1308299607的博客 4809

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

带你认识什么是一级指针、二级指针、三级指针

今天带大家了解一下什么是一级指针、二级指针、三级指针 1、一级指针 一级指针其实就是我们平时常见的普通指针 如: int a = 12; int * b = &a; //一级指针,定义一个指针变量b,将整型变量a的地址(指针)赋值给b 所以首先我们介绍一下什么是指针? 指针其实是一个内存地址,对于一个内存单元来说,单元的地址即为指针。 而我们平时常用的指针则是指针变量。 指针变量从字面意思上可以看出是存储指针的一种变量类型。 在C语言中,允许用一个变量来存放指针,这种变量称为指针

OMGMac的博客 1万+

35 多级指针、空指针、野指针、悬挂指针

本文全面探讨了 C/C++ 编程中指针的复杂性和潜在风险,包括指向指针的指针(多级指针)的定义与使用、空指针、野指针以及悬挂指针的概念、成因及避免方法。文章通过详细解析和案例演示,帮助读者深入理解这些指针类型及其在实际编程中的应用和注意事项。同时,文章还提供了空指针、野指针、悬挂指针对比总结以及指针使用一览表,为读者提供了一份实用的指针使用指南。

大模型全栈工程师 · Thanks_ks 1442

【C语言】指针篇(指针数组,数组指针,函数指针,一级、二级指针)

本篇包含了指针所有的知识点,包括指针的使用方法,野指针问题,指针类型的判断,一级指针,二级指针,指针常量和常量指针,指针数组和数组指针,数组传参和指针传参,函数指针和函数指针数组,以及指向函数指针数组的指针,回调函数等等。

炸掉地球的博客 2042

变量指针与指针变量,数组指针与指针数组

本文介绍了指针变量作为函数参数的使用方法,重点讲解了通过指针间接修改实参数据的两种方式:交换指针指向和交换指针指向的数据。同时详细阐述了指针变量与数组元素的关系,指出数组名即代表数组首地址,可以用指针变量指向数组元素。文章还系统总结了指针运算的6种常见操作,包括自增、自减、加减n个元素、指针相减和比较等,并强调了指针运算必须在同一数组内进行。最后通过多个案例演示了如何用下标法和指针法遍历数组,展示了指针与数组的灵活结合应用。

Dd000110的博客 1862

一文搞懂指针,指针的指针,悬浮指针,野指针

一文搞懂指针,指针的指针,悬浮指针,野指针 学习C语言过程中,指针的概念往往是重难点,伴随着时隐时显的*,令人头晕。实际上指针并非如此复杂,掌握最基础概念,有利于我们更深刻的理解指针。 【百科概念】 指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。 【初识

weixin_45399399的博客 2605

野指针,数组指针,指针数组

目录:1.野指针(1)什么是野指针?(2)野指针的成因a.指针为初始化b.指针访问越界2.指针数组和数组指针(1)指针数组(2)数组指针(3)指针数组和数组指针+1的区别 1.野指针 (1)什么是野指针? 野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的) (2)野指针的成因 a.指针为初始化 全局变量,静态变量未初始化默认是会初始化的,默认是0 其他变量都不会初始化,默认是随机值 eg: #include<stdio.h> int main() { int* p; //局

HanMeng的博客 3054

C++——指针、无效指针、空指针、void*指针、指向指针的指针、指针和const、指针和数组

本文介绍C++指针的相关内容...

HuoZhiyan 的博客 1204

指针作用、指针与指针变量、指针的定义与初始化、指针赋值

指针

csdn_lfy的博客 3704

指针,数组指针,指针数组,函数指针解析

文章目录前言一、指针是什么?1.1内存和地址1.2 * 运算符和 &运算符1.3创建指针变量1.4int* p的解释二、数组指针指针数组2.1 数组指针和指针数组的理解2.2 数组指针和指针数组的定义方式2.3 代码分析三、函数指针3.1 函数指针的概念3.2 函数指针的定义3.3 函数指针的使用四、套娃4.1套娃开始4.2 套娃解释4.3 疯狂疯狂套娃 前言 指针可以说是C语言最强大的功能之一,通过指针可以直接访问内存。然而指针也是C语言中非常难掌握的知识点之一。如果可以灵活地使用指针,基本上可以

fyadf的博客 728

指针、野指针、指针常量、常量指针

指针 概念 指针是什么? 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 内存地址 字节(byte):字节是内容的容量单位,英文称为byte,一个字节有8位,即1byte = 8bits 字(word):4byte = 1字 半字:2Byte 地址:系统为了便于区分每一个字节而对它们逐一进行

HZS8520223520的博客 1417
上一篇: 欢迎使用优快云-markdown编辑器
下一篇: 指针与非指针的交换函数
Lbuntu
博客等级 码龄10年 10粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值