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>
关注微信公众号获取更多资讯
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>
关注微信公众号获取更多资讯
相关文章推荐
- C语言的那些事儿之三
- C语言的那些事儿之二
- C语言的那些事儿之一
- C语言获取文件CRC32算法附加CRC原理(转)
- C++ hello world
- 深入理解C++中public、protected及private用法
- c语言和java的区别
- 学习C++要点
- c语言和java的区别
- c语言和java的区别
- c语言和java的区别
- 【LeetCode从零单刷】Find the Duplicate Number
- C语言宏定义作用、使用方法小结
- 程序链接静态库,静态库再链接另一个静态库,出现未定义的问题?
- 对象创建:Java和C++比较
- 《The C Programming Language》阅读笔记1
- windows下C多线程
- 在C++ 中 如何调用 C# 写的DLL
- c语言的scanf函数
- Java和C/C++进行DES/AES密文传输