- 0
- 0
- 约8.77千字
- 约 12页
- 2019-04-27 发布于福建
- 举报
2012程序员考试强化
PAGE \* MERGEFORMAT 1
指 针
(一)变量的指针和指向变量的指针变量
1、变量的指针就是指变量的地址。
2、指针变量:用来专门存放地址的变量
例如:int a=5,*p=a;
*代表取后面所表示的地址中的内容。
代表取后面内容所存放的地址。
3、指针变量可作为函数的参数
此时,形参与实参是共用一个内存空间的。注意是以指针变量,还是以指针变量的内容作为参数
(二)数组的指针和指向数组的指针变量
1、数组的指针就是数组的起始地址,数组元素的指针就是指存放数组元素的地址。
2、指向数组元素的指针。
这里的定义与指向变量的指针定义相同。只是这时给变量赋值是不是普通变量的地址,而是数组元素的地址。例如:int a[10],b,*p=a;
在C中规定:数组名就代表数组的首地址,因此a与a[0]在值上是等价的。故:p=a可写成p=a[0];
3、通过指针引用数组元素。
定义一个指向数组元素的指针p,然后将一个存在的数组的首地址给p,然后就可以通过p来引用数组中的元素。
C中规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素(而不是将p的值简单加1)。例如:数组元素是实型,每个元素需要占4个字节,则p+1意味着使p的值(地址)加4个字节,以使它指向下一个元素。
我们看一个例子:int a[10],*p=a;
(1)p+I和a+I就是a[I]的地址,即,p+I,a+I,a[I]三者等价。其中a+I中的I跟p+I中的I的意义一样。
(2)*(p+I)或*(a+I)或a[I]是指数组的元素。而且三者是代表同一个元素。
(3)指向数组的指针变量也可以跟数组名一样使用下标来引用。即p[I]与a[I]等价。
4、几个注意点:
(1)指针变量可以实现自身的值的改变。如:p++;而数组名则不允许,如:a[10]中,a代表数组a的首地址,如果可以自加运算的话,也就是数组在内存中存放的位置是随意变化的这是不可能的,因为只要分配空间后,不可能再移动的。故:a++是错误的。
(2)要注意指针变量当前值。
因为指针在移动后,如果不进行复位,则它不能象数组名一样每次使用时都代表首地址,故当指针移动时可能超出范围。
(3)指针变量的运算
①p++使p指向下一个元素。
②*p++,由于++和*同优先级,结合方向为自右向左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p+1→p。
③*(p++)与*(++p)作用不同。前者是先取*p,后使p加1;后者是先使p加1,再取*p。
④(*p)++表示p所指向的元素值加1
5、指向多维数组的指针和指针变量
(1)多维数组的地址。(以二维数组为例)
这里我们可以将二维数组看成一维数组的一维数组。如:int a[10][10];
对第一行:a[0][I]:可以看成是数组名为a[0]的一维数组。其它的同理。故如果写出a[0]+1,当然就代表a数组中的第二行的首地址,而不是a数组中的第二个元素的地址。
*(a[0]+1)同样代表第二行的首地址,只是此时将该表达式加1时,不是在跑到下一行啦,而是在本行朝后移一个,也就是下一个元素的地址啦。下表小结:
6、字符串的指针和指向字符串的指针变量
(1)字符串的指针:指字符串的首地址。
(2)字符串的表示形式
①用字符数组存放一个字符串。如:char str1[]=”china”,str2[]={“china”},str3={‘a’,’b’,’\0’
②用字符指针指向一个字符串。如:char*str1=”china”;char*str1;str1=”china”;这里是指将字符串的首地址赋给str1;
注意:char*a;scanf(“%s”,a);这种方法C不会提示错误,但是不允许的,因为指针变量a,定义了,但没有指它指定具体的空间,故无法正确存放你输入的字符串。
7、指针运算小结
①指针变量加(减)一个整数
C语言规定,一个指针变量加(减)一个整数并不是简单地将指针变量的原值加(减)一个
整数,而是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相
加(减)。如p+I代表地址计算:如果p为整型,则该式代表p+I*2;
②指针变量赋值
将一个变量地址赋给一个指针变量。
Int*p,a=100;p=a;
③指针变量可以有空值,即该指针变量不指向任何变量,表示成p=NULL,其中NULL是
整数0.
④两个指针变量可以相减
如果两个指针变量指向同一个数组元素,则两个指针变量值之差是两个指针之间的元素
个数,但两个指针变量相加就没有实际意义啦。
⑤两个指针变量比较
若两个指针指向同一个数组元素,则可以进行比较。
结构体
结构体属于构造类型,前面我们已学过
您可能关注的文档
- 2011年一级注册结构工程师基础考试笔记个人整理版.doc
- 2011年一级注册结构工程师考试考题---高清完整版.doc
- 2011年中考数学试卷分类汇编:26矩形菱形与正方形.doc
- 2011年二建《建筑工程管理与实务》整理汇总.doc
- 2011年二级建筑师资格考试《建筑结构》试题.doc
- 2011年二级注册建筑师资格考试法律法规经济与施工.doc
- 2011年二级注册结构工程师专业考试大纲及各门分值.doc
- 2011年全国一级注册建筑师考试前期与场地设计考点总结.doc
- 2011年全国专业技术人员计算机应用能力考试Excel中文电子表格题库.doc
- 2011年全国初中学生化学竞赛初赛试题含答案广东赛区审定稿.doc
- 2025年四川轻化工大学招聘专职辅导员真题.pdf
- 2026江西省交通投资集团社会招聘面试考试笔试备考题库及答案解析.docx
- 2025年四川轻化工大学招聘真题.pdf
- 2025年四平金工技工学校招聘考试真题.pdf
- 2025年国家无线电监测中心检测中心招聘真题.docx
- 2025年四平金工技工学校招聘考试真题.docx
- 2026重庆市万州区太龙镇人民政府招聘非全日制公益性岗位人员4人考试笔试参考题库及答案解析.docx
- 2025年国家无线电监测中心检测中心招聘真题.pdf
- 2026重钢集团办公室党群工作部公开招聘考试笔试备考试题及答案解析.docx
- 2025年国药西安惠安医院招聘真题.docx
原创力文档

文档评论(0)