1 综述
在实际写代码的过程中,经常会发现自己忘记了某些C语言的小知识,因此单独写一片帖子作为一个巩固和积累。
2 在C语言中将数组清空
2.1 通过数组遍历,组个赋值为0
-
for(i = 0; i < 4; i ++){ a[i]=0; }
2 使用内存复制函数memset
函数原型:void *memset(void *dst, int value, size_t size);
函数功能:这个函数的功能为将src上,大小为size字节的数据赋值为value。需要注意的是,该函数赋值是以字节为单位的。
头文件:#include <string.h>
清空为0的代码为:
memset( a , 0 ,sizeof( a ) );
3 switch case语句
格式如下:
switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}
快速入门:根据表达式的值来执行相关的语句。
详细介绍:switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇到break。
1)switch语句的判断条件可以接受 int byte char short enum,不能接受其他类型。其判断语句可以是一个变量,也可以是一个表达式。
2)case后的语句可以不用大括号,case后面必须是常量表达式,不允许是变量。
3)一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇到break(利用这一特征可以让好几个case执行统一语句)。
4)default就是如果没有符合的case就执行它,虽然它不是必须的,但是我建议加上。
3.1 举例说明:没有break
void Test(void)
{
//定义变量
unsigned int i=5;
switch(i)
{
case 1:
printf("one\n");
case 10:
printf("ten\n");
case 5:
printf("five\n");
case 3:
printf("three\n");
default:
printf("other\n");
}
}
结果:
five
three
other
在上面的例子中,由于i等于5,和前面的两个case都不匹配,因此结果中并没有one和ten。而第三个case中5和switch中的i的值相匹配,因此会打印five,由于没有遇到break,因此就会顺序执行后面的代码,打印出three和other。
3.2举例说明:标准型
-
void Test(void)
-
{
-
//定义变量
-
unsigned int i=5;
-
-
switch(i)
-
{
-
case 1:
-
printf("one\n");
-
break;
-
case 10:
-
printf("ten\n");
-
break;
-
case 5:
-
printf("five\n");
-
break;
-
case 3:
-
printf("three\n");
-
break;
-
default:
-
printf("other\n");
-
break;
-
}
-
}
资料参考:http://www.cnblogs.com/zhangjs8385/archive/2011/10/06/2200059.html 感谢这位博主的无私分享!
3.3 初始化个字符数组
3.3.1直接逐个初始化
字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
注意:如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0' )。
3.3.2、用字符串常量来初始化
在c语言中,将字符串作为字符数组来处理。因此可以使用字符串来初始化字符数组。char str[]={"I am happy"};
也可以省略花括号。
char str[]="I am happy";
但是,上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的。
char str[];
str="I am happy";//错误,字符数组的赋值只能按元素一一赋值
【END/2015-09-05】