c语言指针深解小樽的java

关于C语言的指针,相信有很多人都已经明白了它是什么意思,但是也有很多人处在迷茫之中,我们一起来看看吧

指针就是其值为内存地址的变量---------直观的理解,可以参考

变量是直接引用变量的值,而指针是间接(通过值的地址)来引用变量的值------只管理解,可以参考

指针可以被初始化为0,null,或一个地址值

也许通过实验能更加深理解:

intmain(){inta;int*p;

//现在我们初始化a

a=47;p=a;

printf("%d\n",p);}

vs2008:

------已启动生成:项目:CFile,配置:DebugWin32------正在编译...hello.ce:\code\net\c语言\hello.c(11):warningC4047:“=”:“int*”与“int”的间接级别不同正在链接...正在嵌入清单...生成日志保存在“file://e:\Code\NET\C语言\CFile\CFile\Debug\BuildLog.htm”CFile-0个错误,1个警告==========生成:成功1个,失败0个,最新0个,跳过0个==========

输出47

---------------------------------------------------------------------------------------------------------------

其实指针变量也是变量,你可以对它赋值,这没有什么好奇怪的!

#include

intc;

a=47;p=a;c=&a;

printf("%d\n",p);printf("%p\n",c);

}

------已启动生成:项目:CFile,配置:DebugWin32------正在编译...hello.ce:\code\net\c语言\hello.c(13):warningC4047:“=”:“int*”与“int”的间接级别不同e:\code\net\c语言\hello.c(14):warningC4047:“=”:“int”与“int*”的间接级别不同正在链接...正在嵌入清单...生成日志保存在“file://e:\Code\NET\C语言\CFile\CFile\Debug\BuildLog.htm”CFile-0个错误,2个警告==========生成:成功1个,失败0个,最新0个,跳过0个==========输出:

470012FF60请按任意键继续...

--------------------------------------------------------------------------------------------------------------------------------

其中%p是格式化输出标记,他说了:“用系统实现时所定义的方式(这个系统是以哪种方式来显示指针,这里很显然是十六进制的)显示一个指针的值”

呵呵,可我们显示的是c,仅仅是一个普通的int类型,它的值是一个地址!!他以16进制的方式显示了这个地址(a的地址)的值。

printf("%d\n",p);printf("%p\n",c);printf("%p\n",a);}

------已启动生成:项目:CFile,配置:DebugWin32------正在编译...hello.ce:\code\net\c语言\hello.c(13):warningC4047:“=”:“int*”与“int”的间接级别不同e:\code\net\c语言\hello.c(14):warningC4047:“=”:“int”与“int*”的间接级别不同正在链接...正在嵌入清单...生成日志保存在“file://e:\Code\NET\C语言\CFile\CFile\Debug\BuildLog.htm”CFile-0个错误,2个警告==========生成:成功1个,失败0个,最新0个,跳过0个==========

输出:

47

0012FF60

0000002F

呵呵,看清楚了吧,%p不是跟指针绑定的,他只是说:“以这个系统显示指针的方式来显示这个数!”,他有什么别的权利!

printf("%d\n",p);printf("%p\n",c);printf("%p\n",a);printf("%p\n",&c);}

0012FF48

很简单,最后一行输出的是c的地址的值(我们知道了p在这个系统中就是以十六进制来显示的,所以我们用p来格式化输出),c本身的值也是一个地址(是a的地址),但是你应该知道什么是什么!

到了这里你还没有看到指针到底有什么特别之处,你所看到的指针变量的功能和普通的变量似乎没有什么区别,正象第一行输出那样,他被赋予了一个整数值然后就被输出了!!

我们需要时刻记住,一个指针变量是用来存储地址的,但是整数值也可以表示地址,所以我们将一个整数值赋予一个指针变量也没有什么不妥的地方,这就同将一个地址的整数值赋予他是一样的。也许你有兴趣看一下地址为47的这个内存单元中存储的内容,我们试试吧!

a=0x000019b0;p=a;c=&a;

printf("%d\n",p);printf("%p\n",c);printf("%p\n",a);printf("%p\n",&c);printf("%d\n",*p);}

这里可以通过编译,但是却不能运行,这是为什么呢(而我们所做的改动仅仅是最后一行的输出语句,也就是说问题出在输出语句上)??能通过编译,说明了编译器并不认为我们的改动有什么错误!!!但是为什么不能运行呢??

、#include

a=47;p=0x0012FF60;c=&a;

正常编译,正常运行

1245024

我们将a的地址赋予p,这个时候我们再*p就可以正确得到了输出值47!!

上一个例子我们不能执行呢?我们不知道内存的47单元是否有可用的值!!!!有吗?我们不知道!!!但是我们想知道,到底怎么办!!!

a=47;p=0x0012FF60;*p=99;c=&a;

printf("%d\n",p);printf("%p\n",c);printf("%p\n",a);printf("%p\n",&c);printf("%d\n",*p);printf("%d\n",a);}

------已启动生成:项目:CFile,配置:DebugWin32------正在编译...hello.ce:\code\net\c语言\hello.c(13):warningC4047:“=”:“int*”与“int”的间接级别不同e:\code\net\c语言\hello.c(15):warningC4047:“=”:“int”与“int*”的间接级别不同正在链接...正在嵌入清单...生成日志保存在“file://e:\Code\NET\C语言\CFile\CFile\Debug\BuildLog.htm”CFile-0个错误,2个警告==========生成:成功1个,失败0个,最新0个,跳过0个==========

0000063

99

可见,我们通过指针改变了变量a的地址单元的值,哈哈,你也许认为我们能通过这样的方式来改变其他地址的值!!这样的想法对吗????

a=47;p=0x0012FF58;*p=99;c=&a;

printf("%x\n",p);printf("%p\n",c);printf("%p\n",a);printf("%p\n",&c);printf("%d\n",*p);printf("%d\n",a);}

正常编译可以运行:

12ff58

惊呼吧,似乎发现了新大陆,可是我们把0x0012FF58改成0x0012FF59你会看到不能运行,你会发现系统提示你a的地盘被入侵了!!!!呵呵!!!改成其他值似乎也不能解决不能运行的现象。

栈是个好东西,你不能破坏他的规矩,你要按照规矩来,你不能做超出规矩的动作!!

你必须遵循内存中栈的规则,否则你将破坏内存的分配机制,进而做出不安全的操作!!这是一中保护措施!!这里间隔2的地址是可以赋值的!!但是要记住一定得不侵犯别人的东西!!

所以呢,你如果要通过这样的方式来改变内存中的值,你必须对内存的状况透彻地了解,可是似乎我们没有这么大的能力吧!!

所以通过变量来实现这样的动作更理智和现实!!

所以呢,你可以看到指针的作用:你就是用她来保存一个变量的地址!!然后呢,你可以直接来得到那个变量的地址!!然后呢,你可以通过*P的形式,来访问或者修改这个变量的值!!而普通的变量,你就不能在之前面加上*来访问这个变量的值所代表的内存单元的值,这个是指针变量的专利产品!!

通过深入学习这些知识点,你将能够熟练地运用C语言指针进行高效的编程,解决复杂的算法问题,并构建自己的数据结构。提供的《C和指针》PDF文档将为你提供详细的解释和实例,加深对这些概念的理解。

-通过《C语言指针大全.doc》和《MethodPointer.png》中的实例,可以进一步理解和应用上述概念,解决实际编程问题。在学习和使用C语言指针时,务必重视实践,通过编写代码加深理解。同时,理解指针的底层工作原理...

在本项目"C语言指针式时钟设计"中,我们将探讨如何利用C语言的基本特性,尤其是指针,来实现一个动态的、实时更新的指针式时钟。这个时钟模拟了真实世界中的钟表,包括时针、分针和秒针的运动,通过在控制台或图形...

以下是关于C语言指针的详细知识点。首先,要理解指针的概念,我们得先了解变量在内存中的存储实质。计算机的内存是一个用来存储数据的线性空间,它由一系列的字节组成,每个字节都有一个唯一的地址标识,这个地址...

使用场景及目标:①掌握C语言指针的基础概念和使用方法;②学习指针的各种高级应用技巧;③了解指针在实际开发中的重要性和常见问题。阅读建议:本文内容较为全面,建议仔细阅读每一部分,结合实际编程练习加深...

3.**解引用操作**:`*`运算符用于访问指针所指向的值,如`inty=*p;`会将`p`指向的值赋给`y`。4.**函数参数传递**:C语言中,函数参数传递可以使用指针,实现按址传递,修改函数内部的局部变量,或者直接操作...

在"C语言指针资料集"中,可能包含了这些知识点的详细讲解,包括实例代码、练习题和解答,帮助读者逐步提升对C语言指针的理解和应用能力。无论是初学者还是有一定经验的程序员,都能从中受益,加深对这一核心概念的...

【C语言指针教学】C语言中的指针是其核心特性之一,也是让许多初学者感到困惑的概念。指针能够直接存储内存地址,允许我们直接访问和修改内存中的数据,从而实现高效的数据操作和复杂的程序设计。理解并熟练掌握...

本压缩包"指针学习.rar"包含了C语言指针学习的入门基础代码和相应的网页说明,旨在帮助初学者理解和掌握这一关键概念。1.**指针的基本概念**-指针是一个变量,其存储的是另一个变量的内存地址。-指针类型与...

###C语言指针详解####一、变量与内存在深入了解指针之前,首先要明确变量与内存的关系。变量是程序设计中最基本的数据存储单元之一,它在内存中占有一定的空间。例如:-`inti;`在内存中申请了用于存储...

###C语言指针详解####一、引言C语言是一种广泛使用的程序设计语言,以其高效性、灵活性和强大的底层控制能力而著称。在C语言中,指针是一个非常重要的概念,它允许程序员直接操作内存地址,从而实现对内存的...

3.**解引用操作**:使用`*`符号可以访问指针所指向的内存单元的值,如`printf("%d",*p);`会打印出`x`的值。4.**指针运算**:指针可以进行加减运算,但这些运算不是简单的数值相加减,而是移动到内存的下一个或...

中级篇则在基础上进一步深入,介绍指针这一C语言的核心概念,如何利用指针进行动态内存管理、数据结构操作,以及更复杂的函数用法,如递归和回调。此外,还将涵盖文件操作、预处理器、位运算等高级主题,帮助读者...

###C语言指针的详细用法在C语言中,指针是一种非常强大的特性,它允许程序员直接控制和操作内存地址。本文将详细介绍C语言中指针的各种用法及其应用场景,帮助读者更好地理解和掌握指针。####指针基础在开始...

本文将深入探讨C语言指针的教学方法,旨在帮助学习者更好地理解和掌握这一概念。首先,理解指针的本质至关重要。指针是一个变量,它存储的是另一个变量的内存地址。在内存模型中,每个变量都有一个唯一的地址,这...

本文将深入探讨C语言指针的教学问题,旨在为教师和自学者提供有效的学习策略。首先,理解指针的基本概念至关重要。指针是一个变量,它存储的是另一个变量的内存地址。在C语言中,我们可以通过取地址运算符`&`获取...

THE END
1.c这个指针运算*p+=5是什么意思?“for(;;)”是什么意思? 2 回答944 阅读? 已解决 c 指针运算的过程 2 回答1.9k 阅读 '\*\*' 在 C 中是什么意思? 2 回答572 阅读? 已解决 三元运算符 a = b ?: c 是什么意思 5 回答20.1k 阅读? 已解决 days=dateDiff(mindate,maxdate); 是什么意思 1 回答3.7k 阅读 找不到问题?创建...https://segmentfault.com/q/1010000009137536/a-1020000009172336
2.c语言中char什么意思c语言中char是字符变量的说明符,表示字符指针类型。char数据类型是一种整数类型,因此char类型占1个字节。c语言中char什么意思C语言中char是声明一个字符类型的指针 ...https://www.touying.com/t-54742-1.html
1.完全弄懂指针深入浅出(一)指针的定义为什么这么写指针是 C 语言中的一个核心概念,它可能看起来比较抽象,但一旦理解了它的本质,你会发现它非常强大和灵活。让我尽量简单清楚地解释一下指针的概念,并通过一些例子帮助你理解。 1.什么是指针? 指针是一个变量,它存储的是另一个变量的地址。也就是说,指针不是直接存储数据本身,而是存储数据所在的位置。通过指针,我...https://blog.csdn.net/dlz0836/article/details/144115306
2.C语言超详细讲解指针的概念与使用C语言3. 数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的其实地址。 对于第一点数组中的变量在内存空间上是连续的相信没有什么疑问,这点在讲解数组的时候就已经提到过了。对于第二点,可以得到,数组名就是一个地址,并且是整个数组的内存起始地址。数组名一个是常量地址我们不能对数组名进行...https://www.jb51.net/article/246777.htm
3.主机记录是什么意思什么是主机记录和指针记录?摘要:什么是主机记录和指针记录就是用来记录一个指针啊。买了后空间服务商会提供主机记录的。一个域名的目的是成为便于记忆和沟通的一组服务器的地址网站,电子邮件,等,世界上第一个注册的域名是在年月注册的。 什么是主机记录和指针记录? 就是用来记录一个指针啊。假设有个原始指针*p, 在后续操作过程中可能会改变...https://www.ucloud.cn/yun/120359.html
4.空指针异常是什么意思?聚名资讯空指针异常是什么意思? 空指针异常(Null Pointer Exception)是一种常见的编程错误,它在程序中出现时表示试图使用一个空(null)引用的对象,而该对象实际上不存在。在许多编程语言中,包括Java、C++、C#等,空引用是一个特殊的值,表示没有引用任何对象。 当程序中的代码尝试对一个空引用进行操作,比如调用它的方法、...https://www.juming.com/zx/19494.html
5.空指针到底是什么意思?腾讯云开发者社区空指针 到底是什么意思? 各位,前段时间我们有推文介绍过野指针和悬空指针,那C中还有一个叫做空指针的名词,它究竟是指什么呢,今天就跟大伙聊聊这个空指针。 我们讲,每一种指针类型都有一个特殊值——“空指针”。它与同类型的其他所有指针值都不相同,它“保证与任何对象或函数的指针值都不相等”。也就是说,空...https://cloud.tencent.com/developer/article/1668519
6.HMI连接里面的区域指针具体表达的是什么意思SIMATICS7区域指针就是PLC和HMI共同声明一块区域,这块区域有特定的作用,其中作业信箱:一般是PLC发送特定的指令代码,HMI就会执行特定的动作。通过下边的几个例子,可以有一个大致的了解 作业信箱的使用方法,参考下边教程通过作业信箱69和70实现配方数据记录的写入和读取功能http://www.ad.siemens.com.cn/productportal/Prods/HMI...https://www.ad.siemens.com.cn/service/answer/solve_289603_1077.html
7.*PS在c语言中是什么意思?在C语言中的意思是,PS是指针变量。https://www.3d66.com/answers/question_1370322.html
8.指针变量初始化为NULL什么意思1.为什么指针变量定义时一定要初始...1.为什么指针变量定义时一定要初始化?2.指针变量初始化为NULL是什么意思? 扫码下载作业帮搜索答疑一搜即得 答案解析 查看更多优质解析 解答一 举报 1.为什么指针变量定义时一定要初始化? 答:因为你首先要理解一点.内存空间不是你分配了才可以使用只是你分配了之后使用才安全,为什么要进行对他初始化呢因为,如果你没...https://www.zybang.com/question/722ef8a10a07c49f410a355339ab7368.html
9.指针式万用表和数字式万用表上面的符号代表什么?具体怎么使用?测量方法与交流电压基本相似,转动开关至相应的交流电压档,并使指针有较大的偏转。如被测量电路中带有直流电压成份,可在“+”插座中串接一个0.1uf的隔直流电容器。 七、电容测量:首先将开关旋至被测电容容量大约范围的档位上(见附表),用0Ω调零电位器校准调零。被测电容接在表棒两端,表针摆动的最大指示值即为...https://www.swpu.edu.cn/eelab/info/1090/2254.htm
10.油箱ef分别代表什么意思?汽车油不足图标显示什么汽车油不足图标显示什么 油箱ef分别代表油箱内燃油剩余量的意思,其中,e是Empty的缩写,表示油箱内的燃油不足,或者即将耗尽;f是Full的缩写,表示油箱处于满油状态。 汽车仪表盘的燃油表上,通常用ef两个字符表示汽车油箱内的燃油的剩余量。当燃油表中的指针指向f即说明汽车处于满油状态;当指针指向e表示燃油即将耗尽,...https://www.yoojia.com/ask/3-9145951219028098202.html
11.空调抽真空是什么意思?具体步骤如何?家用电器4、一般一匹空调抽真空约15分钟,二匹空调抽真空约20分钟,三匹空调抽真空约30分钟,确认压力表指针是否指在-1.0×105pa(-76cmHg)处,抽真空完成后,完全关紧歧管阀低压(Lo)手柄,停下真空泵。 5 、检查真空后,稍微打开液阀放气,以平衡系统压力,防止拆管时空气进入,拆下软管后再完全打开高低压阀。 https://www.to8to.com/yezhu/v72081.html
12.消防安全知识压力表指针指向绿区为压力正好合适;压力表指针指向黄区为压力过大;压力表指针指向红区说明压力不足。(简记:绿区好、黄区大、红区小) 7.消火栓的使用方法? 使用消防栓时首先关闭所有灭火现场的电源,打开消火栓的玻璃门,按下手动报警器按钮,与之相连的水泵结合会自动加压,接好水带枪后(打开水阀门后由于水的压力较大...https://wjw.zhengzhou.gov.cn/xfaq/7052090.jhtml
13.乙女游戏是什么意思?“乙女”游戏属于女向性游戏的细分。“女性向”一词来源于日本,指针对女性需要而开发出的相关作品。最早出自日本动漫,后不断延伸到小说、游戏、影视作品中。具体到游戏领域,1994年,在光荣株式会社推出了乙女恋爱模拟游戏《安琪莉可》后,第一款公认的真正意义上的女性向游戏才正式诞生。 https://36kr.com/p/1259268333792771
14.BIOS32位存储逻辑块地址逻辑地址32位什么意思BIOS 32位存储逻辑块地址 逻辑地址32位什么意思 例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。 您需要了解一下操作系统的虚拟内存机制。 操作系统会为新建立的每一个进程开辟一个独立却完整的地址空间(32位机器...https://blog.51cto.com/u_16099333/8505073
15.天钺星是什么意思?紫微天钺在十二宫详解一、天钺星是什么意思?紫微天钺详解 天钺星是一颗南斗助星,五行属火,是一颗贵人星,这颗星曜专门职掌科甲、功名。天钺星其贵助并非显而易见,但却在暗中有很大的助益,其贵助也是来自长辈、长官或上层机构。一般来说,天钺星在申、酉宫居庙地,在寅、巳、未宫居旺地。 https://ly.yishihui.net/bz/3941.htm