资源描述:
《c语言自增自减运算符应用探讨》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言自增自减运算符应用探讨往窟技术2007年(第36卷)第4期C语言自增自.成运篡符应用探讨马红玲(甘肃农业职业技术学院,甘肃兰州730020)●摘要:从C语言自增自减运算符的概念出发,分析了C语言中自增自减运算符在循环结构和指针运算中的应用方法,并针对自增自减运算符在程序设计过程中容易出现错误的方面作了精辟地阐述.关键词:运算符表达式循环结构指针数组在众多的计算机程序设计语言中,c语言以其灵活性和实用性受到广大计算机应用人员的喜爱,并且也成为许多高校工科各专业学习程序设计的必修课程之一.在c语言的教
2、学过程中,自增自减运算符概念抽象,运用灵活,是学习c语言的难点之一.下面就其灵活应用的几个方面作进一步探讨.1自增自减运算符的概念c语言程序设计过程中,我们经常用到x=x+l,X--'----X1这样的赋值表达式,用更简洁的方式表示:x=x+l可表示为:X++或++XX--'----X一1可表示为:X—一或一一X"++…N'----"称为自增,自减运算符.它们是单目运算符,只能应用于变量,而不能用于常量或表达式.结合性与简单赋值运算符相同,但优先级高于任何双目运算符.自增自减运算符有两种使用形式:前缀形
3、式,即它们在操作数前,如++x,一x;后缀形式,即它们在操作数后,如x++,x一.++表达式与一表达式独立使用时,前缀形式与后缀形式无区别,但它们在表达式中被引用时,结果是不同的.前缀形式是先增(减)1,后被引用;后缀形式是先被引用,后增(减)1.例如,如果变量X的原值等于3,则执行下面的赋值语句:①y=++x;(x的值先变成4,再将x的值赋给Y,Y的值为4)②y=x++;(先将x的值3赋给Y,Y的值为3,然后x的值变为4)2自增自减运算符在循环结构中的应用为了充分发挥计算机在程序控制下进行自动计算的功
4、能和运算速度快的特点,在程序设计过程中力求把复杂问题的求解转化为简单过程的重复.为此,在多数计算机程序设计语言中,都提供有循环结构.C语言提供有3种循环结构:for结构,while结构和do…while结构.在while结构和do…while结构中,其循环体中应有使循环趋向于结束的语句.而这样的语句一般用赋值语句.例如用表达式"i++"或"i__".其中i称为循环变量,在循环结构中只有改变循环变量的值,这样在循环体执行若干次之后,才能使循环条件不满足,结束循环.如果无此语句,则i的值始终不变,程序陷入死
5、循环.在f0r结构中,f0r语句最简单的应用形式也可理解为如下形式:for(循环变量赋初值;循环条件;循环变量增值)语句其中循环变量增值语句一般应用包含自增(自减)运算符的表达式来实现.使用原理同while结构和do…while结构.例如:for(i=l;i<=100;i++)sum+=i;该语句能完成1+2+3+..…?+100的功能.当然在循环结构中使用自增(自减)运算符,只有在步长增1或减1的情况下使用,在其它情况下,还应使用赋值表达式来完成改变循环变量值的功能.123自增自减运算符在指针中
6、的应用在c程序中,定义一个变量,就意味着在计算机内存中给这个变量分配一定的存储空间.使用TurboC系统时计算机内存为整型变量分配1个字节,对单精度型变量分配4个字节,为双精度变量分配8上字节,为字符型变量分配1个字节.内存区的每一个存储单元(1字节)都有一个固定的编号,这个编号就称为地址.如图1所示,假设定义变量P和a,则在内存中分别为两个变量分配存储单元,其存储单元的首一据对20象00的0地址,图卜指针就是数据对象的地址,图L兰一fL三一f1中的3420和2000既可以称为地34202000址,也可
7、以称为指针或指针常量,由图1指针与指针变量此可见,指针只不过是地址形象的称呼而已.为了方便对存储单元进行控制,我们可以设置某些变量专门存放指针,这样的变量称为指针变量.图1中的变量P存放了变量a的地址2000,因此,P就是指向a的指针变量.在c语言中,指针使用非常灵活,指针既可指向各种类型的变量,也可指向数组,函数和文件.指针指向一定的数据对象时,即可下移指向下一对象,又可上移指向上一对象,这就用到自增自减运算符来实现.在c语言中,指针变量引用时,同样要先定义,后使用.如果定义指针变量P指向一定的数据类
8、型,则p++指向内存中下一个元素(而不是将值简单加1),p--一指向内存中上一个元素(而不是将值简单减1).p++(p一)所代表的地址实际上是P+1×d(p一1×d),d是一个数据对象所占的字节数,在Turboc中,对整数d=2,对单精度实数d=4,对字符型数d=l.下面来看一个程序段:inta【6]:{1,2,3,4,5,61,p;p=a;prin"%d",p++);printf("%d"p)++);在此程序段中,定义了一个整型数组a,包