您的位置:首页 > 编程语言 > C语言/C++

C语言的那些事儿之四

2015-10-10 10:46 381 查看
                            每日一结



1.在switch-case语句中,若case和break中有多个语句,其之外可以不用花括号,语句之间分号即可。且switch()括号内不能是float类型的,再者,case和 : 之间必须要用空格,且case和 :之间的数必须是整型






 



2.在do-while()循环中,while()表达式后的 ;分号不能丢,他表示do-while()语句的结束,它是先执行do{ }循环体内,再判断while()表达式是否成立,所以说不管while()括号内的语句是否成立,至少都会执行一次。

3.关于for循环中,多个表达式是否可以省略的问题,具体见截图



 



 

4.return语句的用法



5.continue和break的区别,具体见截图



6.数组的常见的误区

I.若对一个数组定义后,如:int a[5] = {0};

若再用a[5]={1,2,3,4,5}  (X)这种用法是错误的,因为此时的a[5]表示数组中的第5个元素,若要对数组赋值,可对其每个元素一个一

个赋值。



 



 

II.在定义数组的语句中,可以有多个数组说明符,它们之间用逗号隔开,如: double w[22],v[100],u[5];

数组说明符中的以对方括号中只能是整型常量或整型常量表达式

如: char carr[10+71];

III.在给二维数组赋初值时可以不用行花括号对,例如:

Int a[3][4] = {1,2,4,5};

在编译时,系统将按a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值0,。对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式

IV.在二维数组int a[3][4]中,a[0],a[1],a[2]都是一维数组名,同样也代表一个不可变的地址变量,其值依次为二维数组每行第一个元素的地址,其类型就是数组元素的类型。因此,对于二维数组,像a[0]++这样的表达式都是非法的,若有表达式a[0]+1,表达式中1的单位应当是2个字节

V.在定义数组元素的个数时,最好用 #define  N,这种形式确定它的个数,因为这样便于后续程序的修改

VI.C语言程序在运行过程中,系统并不自动检验数组元素的小标是否越界,因此数组两端都可能越界而破坏了其它存储单元中的数据,甚至破坏了程序代码

VII.在c语言中,数组名中存放的是一个地址常量,它代表整个数组的首地址,记得是一个常量哈,所以不能对其赋值

 

代码示例一如下:



运行结果如下:



 

代码示例二如下:



运行结果如下:



 

代码示例三如下:



运行结果如下:



 

总结如下:

将函数的参数声明为数组和声明为指针都是一样,其传值的时候,

只是把地址传过来了而已,并没有把整个数组传过来

 

7.\0是一个转义字符,称为“空值”,它的ASCII值为0.‘\0’作为字符串结束标志占用存储空间,但不计入串的实际长度。

8.字符数组和字符串



(注意区别字符数组在定义时和其它数组的区别,它的定义方式更广,比一般类型的数组更为灵活,注意,这种写法也只针对于字符类型的数组)

 


注:字符串相当于一个一维数组

(这个实例多体会体会)



        (对于字符串,用字符数组来处理)



 



 

 

9.字符串函数

  


     注:在(1)式中,因为字符串遇到\0 就结束,所以其长度为1

           在(2)式中,因为\t和\v以及\\都是转义字符,所以  

           其长度为3

           在(3)式中,因为\69是转义字符,而\082不是转义

           字符,所以其长度为1



 字符串比较函数strcmp,调用形式如下:

  Strcmp(s1,s2)

该函数用来比较s1和s2所指字符串的大小。若串s1 >串s2,函数值大于0;若串s1=串s2,函数值等于0;若串s1 < 串s2,函数值小于0  (s1和s2为数组名)

比较的方法是:对其逐个比较,比较字符大小的依据是其ASCII码值 

  

 

注:对于字符串函数的使用,都必须在代码前面包含头文件<string.h>

  

关注微信公众号获取更多资讯



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: