[精品]青梅浅谈之C语言指针

[精品]青梅浅谈之C语言指针

ID:46295770

大小:91.00 KB

页数:5页

时间:2019-11-22

[精品]青梅浅谈之C语言指针_第1页
[精品]青梅浅谈之C语言指针_第2页
[精品]青梅浅谈之C语言指针_第3页
[精品]青梅浅谈之C语言指针_第4页
[精品]青梅浅谈之C语言指针_第5页
资源描述:

《[精品]青梅浅谈之C语言指针》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、青梅浅谈之C语言指针讲师:青梅煮酒指针是C语言独冇的也是学习C语言的重点,要学好C语言,必须将指针I•分了解,才能很好的利用C语言来为我们服务。你是不是觉得指针很难学?不,不耍有这样的想法,下面就由我來想大家讲解C指针,从浅至深。什么是变量首先先定义一个变量%其内部结构如下图所示:变量的结构内存单元一个变量冇三个属性,分别是:名称、地址、内容,名称为我们声明变量时为变量赋予的名字:地址是系统随机分配的一个内存编号;内容是我们赋予变量的值。我们来分析如下代码:intmain(void){inta;a=10;re

2、turn0;}1.inta;我们声明一个名称为3的变量,系统在内存屮随机找到一块空闲的空间,并将使用权限交于软件,此时a变量的名称与地址都己定义,其值暂未定义,目前是垃圾值。2.a=10;将变量a的值定义为10o由此可见在一个变量的定义时,我们认为町以操控其名称与值,但地址是由系统随机控制的。这里耍注意的是不要将变量的这三个属性混淆,认清这一点有助于我们对指针的学习。二、什么是指针变量所谓的指针就是指地址,所谓指针变量就是用来专门存放地址的变量。我们定义的一般变量可以存放如:字符、数字等值,而指针变量只能存放

3、变量的地址,并H•指针变量的类型应为所所指向变量的类型,如:你不可以创建一个整型变量a,在创建一个浮点型指针,将其指向变量a(明白这一点有助于对结构的学习)。指针变量和一般变量向同,也由三个属性,其分别为:名称、地址、内容,指针变量的内容存放的是地址。这里应注意的是不要将指针变量的地址与内容混淆,指针变量的地址是其自身的地址,而内容是别的变量的地址(如指针变量的内容指向自己的地址,这里不讨论)。1•如何定义指针变量intmain(void){inta;int*p;p=&a;*p=10;printf(”%d

4、”,a);return0;}1.inta;创建一个变量a,其类型为int型,2.int*p;创建一个指针变量p,其值为垃圾值3・p二&a;将变量a的地址赋予指针变量p,4.*p=10;修改指针变量p所指向的变量内容。详解:第2步创建了一个指针变虽p,方法为所要指向变量的数据类型加“*”,注意的是其创建的指针变最是P,而不是巾,其类型为int*型。这时的指针变量的内容为垃圾值,第3步将为指针变量赋值p=&a;,将a的地址发送给p。2•如何使用指针变量指针变量的使用与一般变量有所不同,首先我们要明白为何声明一个指

5、针变罐?其实声明指针变量的作用是用來控制--般变量,所以我们不能像一般变量那样使用指针变量。判断下面两行加粗代码:intmain(void){inta;int*p;p=&a;P=io;*p=10;printf("%d",a);return0;}详解:指针变量p只接受地址,所以p=10;,是错误的。而在上一步p=&a;,中我们已将a的地址发送给p,为何要将a的地址发送给p呢?我们的目的是通过指针变量p来控制a,那么怎么才能达到目的呢?我们使用加p的方式,就可以控制a,这时候*p就等同于a变量,编译以上代码,

6、查看结果。一个指针变屋,不论其为何类型,都只占4个字节,原因是指针变量只储存任何数据的前4个字节的地址,其长度是由类型控制的。如:定义一个doublea;变量,其指针只保存其前4个字节的地址,后4个字节时由double来控制,所以说我们定义的指针变量其类型要与其指向的变最类型形同。三、指针与数组首先分析(式一):voidtex(int*p,inti){p[2]=10:}intmain(void){intn;inta[5]={1,2,3,4,5};tex(a,5);printf(”%d”,a[2]);retur

7、n0;}上式时定义了一个数组a,然后通过函数tex将a笫三个元素的值进行修改后输出。你是不是冇这样一个问题:p[2]=10;不对吧,怎么不是*pL2J=10;?这里是难点也是重点,当初我白学时也卡到了这里,不过也很简单,主要是我们将一个概念没有弄明口。1•什么是数组我们在以前学习数组时,由于并没冇接触指针,所以数组的内部结构并没冇学习,那么现在我们就来重新认识一下数组。数组就是将数据连续的储存在内存中,这里的关键词是连续!C语言中规定一个数组的数组名就是其第一个元索的地址,由此我们可以知道a实质是a[0]的地

8、址即a=&a[0]。那么结合我们所学的指针,数组a的第一个元素就是*(a),第二个元素是*(a+l),以此类推。intmain(void){inti;inta[5J;*(a)=1;*(a+l)=2;*(a+2)=3;*(a+3)=4;*(a+4)=5;for(i=0;i<5;++i){printf(”%d”,a[i]);}return0;}将上式输入VC++6.0中是能成功编译的,同时为方便使用C语

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。