字符常量与字符串常量的区别
          等级考试之C语言篇—C语言中几个容易混淆的知识点解析
         
    笔者是一名教育工作者,从近年学生参加C语言等级考试情况来看,理论成绩普遍低于实践成绩。主要在一些似是而非的概念上失分较多,现就教学中碰到的一些问题做一剖析,以抛砖引玉。
1、递增(减)运算符的表达式i++和++i的理解
   i++和++i最终目的都使i值增加1,但i++和++i作为表达式是不一样的。例如:i=3,若j=i++,则执行后i值为4,而j值仍然为3,原因是加号在后,先用后加。但若是j=++i;则i和j的值都为4,称为先加后用。最典型的应用表现在:
    若i=3;a=(++i)+(++i)+(++i); 则a的结果为18,而并非有些书上分析的4+5+6=15。若是a=(i++)+(i++)+(i++);则结果为9;而两者最终的i都将自增3即得6值。
2、字符串常量和字符常量的联系与区别
    显而易见,字符串是由字符构成的,表示为"ABCD",而字符常量表示为'A',两者不同之处首先在于存储方式,即使字符串中只有一个字符,如"A",系统会自动给其添加结束标志'\0'而占两个字节的存储单元。因此两者在使用中也有许多不同:
(1)表示方法不同
    字符常量可用字符变量表示,如 char a; a='A'。但C语言中没有字符串变量,字符串只能用字符数组或指针表示,如 char a[]="abc"或char *a="abc"。
(2)比较方法不同
    字符常量可直接使用关系运算符比较大小,而字符串则要借助strcmp函数来比较大小,根据函数的返回值判断。
(3)输入输出不同
    单字符可用getchar(putchar)函数或scanf(printf)函数加%c输入输出。字符串的输入输出方
法则非常多样:可用scanf(printf)函数加%s输入输出或用gets(puts)函数输入输出,甚至还可用strcpy字符串拷贝函数直接给字符串赋值。而这些方法又各有异同:scanf输入字符串时认为空格是分隔符,一旦遇到空格就认为该串已结束;而gets则认为空格是字符串中的合法字符,只有'\0'才是结束标志,适合于输入带空格串的情况。此外puts和printf均可输出字符串,两者又有区别,因而考生在这些地方更要非常细心,谨防出错。
3、逻辑运算符“&&”和位运算符“&”
    和其它语言一样,C语言也有三种基本逻辑运算符。其中“&&”(与)运算在前后操作数均为真时,结果才为真,表示为1,如5&&2的值是1,3<4&&8>6的值也是1,否则为假。而位运算符则是C语言独特的一种运算符,其中的“&”表示对两个操作数按二进制位进行(与)计算,规则为0&0=0,0&1=0,1&0=0,1&1=1。如6&5=4,6变为00000110,5变为00000101,按位运算的结果为100即4。而3&4结果则为0,这也是考生应该注意的地方,此外,“&”还是取地址运算符,加在普通变量之前代表该变量的地址,在这里,它是单目运算符。
4、while语句和do while语句
    两者都起循环作用。不同的是:while条件判断在前,循环在后,而do while语句则是循环体在前,条件判断在后。这样在循环条件开始就不满足时,while一次也不执行,但do while语句还会执行一次。如:若有x=0,i=0则while(x>0) i++;结果i的值仍然是0;而do i++;  while(x>0);之后i的值为1,即循环体执行了一次。如果开始时条件是成立的,则两者意义一样。
5、while语句和if语句
  教学中常发现有些学生不能理解这两者的意义,或者不明白在何种情况下使用它们。众所周知,while是循环语句,当条件成立时,执行循环体,继而再判断条件,直到条件不成立为止,所以一定要在循环体中加上使循环趋于结束的语句。而if是选择语句,属于一次行为,即成立则执行一种操作,不成立又执行一种操作,并不会再返回。这也是一个容易让初学者混淆的地方。
6、符号常量和变量
  符号常量是为了操作的方便,将程序中出现频繁的常量利用define定义为一个符号并作为常量使用。
它和变量的形式很相近,但既然是常量,就只能当成常量使用,不能进行赋值等操作。例如:
#  define  N 10
main()
{int i, a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++);
printf("%3d",a[i]);}
    这里N就是一个符号常量,代表10。这样做的好处是当要修改数组长度时,只需修改N 后面的数。如果程序当中出现N=10;则是错误的,因为不能给常量赋值。
    总而言之,由于C语言的灵活性,我们可以利用它编写出各种各样的程序。但也正因为如此,它的掌握也就有了较大的难度,这就要求广大的考生要在平时的学习中注意一点一滴的知识积累,不放过一个疑难点,细心,认真,勤于思考,必将能取得好成绩。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。