目录
五.字符串
六.转义字符
七.注释
7.1注释的类型
7.1.1单行注释
7.1.2多行注释
7.2注释的使用方法
7.2.1解释代码功能注释
7.2.2提供代码示例注释
7.2.3禁用或屏蔽代码
八.选择语句
8.1if语句
8.1.1单个if语句
8.1.2嵌套if语句
8.2switch语句
8.2.1单个switch语句
8.2.2多个case合并在switch语句中
九.循环语句
9.1for循环
9.2while循环
9.3do while循环
十.函数
10.1 函数的定义和声明
10.2 函数的调用
10.3 函数的返回值
10.4 函数的参数
10.5 函数的作用域
五.字符串
注意:C语言中有字符类型,但没有字符串类型
定义:
"Hello World!\n"
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
为了更直观的感受出来,我们可以敲个代码来进行调试,观察一下。敲完代码后,按键盘上的F10进行调试 ,然后用鼠标依次点击工具栏中的调试,窗口,监视,监视(1,2,3,4)中的任意一个,就会出现一个监视窗口,在名称那一栏输入一串字符串,展开以后可以看见在末尾还有个\0,这个\0就是字符串的结束标志。
我们也可以通过下面这个代码来看一下有\0和无\0的区别:
通过上面这张截图可以看出arr1数组和arr2数组运行后的效果,那么为什么arr2数组运行后会出现这种情况呢?这是因为字符串打印时判断它是否结束的标志是后面有无\0,而对arr2数组来说,内存中识别不到\0到底在哪块儿,所以就出现了这种情况。如果我们主动给arr2数组放一个\0进去,大家可以看看它会发生哪些变化。
通过这个例子我们可以得出一个结论:字符串里边隐藏放了一个\0,它是字符串结束的重要标志,它对字符串来说非常重要。
六.转义字符
转义字符通俗来说就是转变了原来的意义,例如:
可以看出,我们只是在n前面加了一个\ ,而打印出来就是截然不同的效果,这就是转义字符的作用,"\n"就是换行的意思。
注意:转义字符需要放在双引号或单引号中使用,否则会被当做普通字符处理。
常用转义字符表:
注:字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
七.注释
在编写C语言代码时,注释是一个非常重要的元素。注释用于解释代码的部分,它可以提供代码的目的,功能,逻辑和其他相关信息,使代码更易于理解和维护。
7.1注释的类型
7.1.1单行注释
单行注释用于在一行中注释代码的一部分。它以 // 开头,后面跟着注释内容 。单行注释从 // 开始一直延伸到该行的末尾。
int x = 10;//这是赋值语句
7.1.2多行注释
多行注释用于注释一段代码或多行代码。它以 /* 开始,以 */ 结束。多行注释可以跨越多行,并且可以包含多行代码。
/*这是一个多行注释它可以跨越多行*/
/*int x = 10;
这是一个多行注释它可以包含多行代码
int y = 20;*/
7.2注释的使用方法
7.2.1解释代码功能注释
用于解释代码的功能,目的或逻辑。这对于其他开发人员或未来的维护者来说非常有用。
int sum = a + b;//计算两个数的和
7.2.2提供代码示例注释
可以用于提供代码示例,特别是在解释复杂或关键的代码段时。
//使用循环计算阶乘 int factoriar = 1;
for (int i = 1; i <= n; i++)
{
factorial *= i;
}
7.2.3禁用或屏蔽代码
有时,我们可能希望暂时禁用或屏蔽一些代码,而不是删除它们,注释可以用于这个目的。
//int main()
//{
// char arr1[] = "abc";//字符串是可以存放在字符数组中的
// char arr2[] = { 'a', 'b', 'c','\0'};
//
// printf("%s\n", arr1);
// printf("%s\n", arr2);
//
// return 0;
//}
使用注释时的注意事项
- 清晰简洁:注释应该清晰、简洁,用简洁的语言解释代码的目的和功能,避免使用冗长或复杂的注释。
- 避免无用注释:避免添加无用的注释,这些注释不提供任何有用的信息或是显而易见的内容。
- 更新注释:当代码发生变化时,确保更新相关的注释,以保持代码和注释的一致性。
- 使用有意义的变量和函数名:使用有意义的变量和函数名可以减少对注释的需求,尽量使用清晰、具有描述性的名称。
- 不要过度注释:避免过度注释代码,只在必要的地方添加注释。过多的注释可能会让代码难以阅读和理解。
八.选择语句
在C语言中,选择语句用于根据条件执行不同的代码块,它包括if语句和switch语句。
8.1if语句
if语句用于根据条件执行不同的代码块,它的基本语法如下:
if (condition) {
//如果条件为真,执行这里的代码
}
else {
//如果条件为假,执行这里的代码
}
condition是一个表达式,它的值为真或假,如果condition为真。那么if代码块中的代码将被执行;如果condition为假,那么else代码块中的代码将被执行。
8.1.1单个if语句
int x = 10;
if (x > 0)
{
printf("x是正数\n");
}
else
{
printf("x是负数或零\n");
}
在上面的例子中,如果x大于0,则输出“x是正数”;否则,输出“x是负数或零”。
8.1.2嵌套if语句
if语句可以嵌套使用,即在if代码块或else代码块中再使用另一个if语句。
int x = 10;
int y = 20;
if (x > 0)
{
if (y > 0)
{
printf("x和y都是正数\n");
}
else
{
printf("x是正数,y是负数或零\n");
}
}
else
{
printf("x是负数或零\n");
}
在上面的例子中,如果x和y都大于0,则输出"x和y都是正数";如果x大于0,而y小于等于0,则输出“x是正数,y是负数或零”;否则,输出“x是负数或零”。
8.2switch语句
switch语句用于根据不同的条件执行不同的代码块,它的基本语法如下:
switch (expression)
{
case constant1:
//如果expression等于constant1,执行这里的代码块
break;
case constant2:
//如果expression等于constant2,执行这里的代码块
break;
default:
//如果expression不等于任何一个常量,执行这里的代码
break;
}
expression是一个表达式,它的值将与每个case后面的常量进行比较。如果expression等于某个常量,那么与该case对应的代码块将被执行;如果expression不等于任何一个常量,那么default代码块将被执行。
8.2.1单个switch语句
int day = 3;
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
default:
printf("周末\n");
break;
}
在上面的例子中,根据day的值,输出对应得星期几。如果day等于1,输出“星期一”;如果day等于1,输出“星期一”;如果day等于2,输出“星期二”;如果day等于3,输出“星期三”;如果day等于4,输出“星期四”;如果day等于5,输出“星期五”;否则,输出“周末”。
8.2.2多个case合并在switch语句中
int month = 2;
switch (month)
{
case 1:
case 2:
case 3:
printf("第一季度\n");
break;
case 4:
case 5:
case 6:
printf("第二季度\n");
break;
case 7:
case 8:
case 9:
printf("第三季度\n");
break;
case 10:
case 11:
case 12:
printf("第四季度\n");
break;
default:
printf("非法月份\n");
break;
}
在上面的例子中,根据month的值,输出对应的季度。如果month的值是1,2或3,输出“第一季度”;如果month的值是4,5或6,输出“第二季度”;如果month的值是7,8或9,输出“第三季度”;如果month的值是10,11或12,输出“第四季度”;否则,输出“非法月份”。
注意事项:
- 在if语句中,条件的布尔值可以是真(非零)或假(零)。在switch语句中,条件的值必须是整数或字符类型。
- 在switch语句中,每个case后面都必须有一个break语句,用于跳出switch语句。如果没有break语句,将会继续执行下一个case对应的代码块,直到遇到break语句或switch语句结束。
- 嵌套选择语句可以在if代码块或else代码块中嵌套使用if语句或switch语句,以实现更复杂的逻辑。
九.循环语句
当我们需要重复执行一段代码时,循环语句是非常有用的。在C语言中,有三种主要的循环语句:for循环,while循环,do while循环。
9.1for循环
for循环是C语言中最常用的循环语句之一,它的语法如下:
for (初始化表达式; 循环条件; 更新表达式)
{
//循环体
}
for循环由三个部分组成:
-
初始化表达式:在循环开始之前执行一次的表达式,用于初始化循环变量。
-
循环条件:在每次循环开始之前检查的表达式,如果为真则执行表达体,否则退出循环。
-
更新表达式:在每次循环结束之后执行的表达式,用于更新循环变量的值。
下面是一个使用for循环计算1到10的和的例子:
int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum += 1;
}
printf("1到10的和为:%d\n", sum);
在上面的例子中,我们使用for循环计算了1到10的和。循环变量i的初始值为1,每次循环结束后加1,直到i的值大于10为止。循环体中的代码将i的值累加到变量sum中,最后,输出变量sum的值。
9.2while循环
while循环是另一种常用的循环语句,它的语法如下:
while (循环条件)
{
//循环体
}
while循环只有一个循环条件,没有初始化表达式和更新表达式。循环条件为真时执行循环体,否则退出循环。
下面是一个使用while循环计算1到10的和的例子:
int sum = 0;
while (i <= 10)
{
sum += 1;
i++;
}
printf("1到10的和为:%d\n", sum);
在上面的例子中,我们使用while循环计算了1到10的和。循环变量i的值为1,每次循环结束后加1,直到i的值大于10 为止。循环体中的代码将i的值累加到变量sum中。最后,输出变量sum的值。
9.3do while循环
do while循环是一种先执行循环体再检查循环条件的循环语句,它的语法如下:
do
{
//循环体
} while (循环条件);
do while循环至少会执行一次循环体,然后在每次循环结束后检查循环条件,如果为真则继续执行循环体,否则退出循环。
下面是一个使用do while循环计算1到10的和的例子:
int sum = 0;
int i = 1;
do
{
sum += i;
i++;
} while (i <= 10);
printf("1到10的和为:%d\n", sum);
在上面的例子中我们使用do while循环计算了1到10的和。循环变量i的初始值为1,每次循环结束后加1,直到i的值大于10为止。循环体中的代码将i的值累加到变量sum中。最后,输出变量sum的值。
注意事项:
- 循环条件的值必须是布尔值,即真(非零)或假(零)。如果循环条件为真,循环将继续执行;如果循环条件为假,循环将退出。
- 在循环体中,需要确保循环变量的值能够在一定条件下更新,负责循环可能会变成无限循环,导致程序陷入死循环。
- 在循环体中,可以使用 break 语句和 continue 语句来控制循环的执行流程。break 语句用于立即退出循环,continue 语句用于跳过本次循环的剩余代码,进入下一次循环。
十.函数
函数是C语言中一种非常重要的代码模块化工具,它可以将一段具有特定功能的代码封装起来,方便重复使用,并提高代码的可读性和可维护性。
10.1 函数的定义和声明
函数的定义包括函数的返回类型、函数名、参数列表和函数体。函数的声明包括函数的返回类型、函数名和参数列表,用于告诉编译器函数的存在。
下面是一个简单的函数定义和声明的例子:
int add(int a, int b);// 函数声明
int add(int a, int b);// 函数定义
{
int sum = a + b;
return sum;
}
在上面的例子中,我们定义了一个名为add的函数,它接受两个int类型的参数`a`和`b`,返回它们的和。函数的声明告诉编译器函数的存在和类型,函数的定义给出了函数的具体实现。
10.2 函数的调用
函数的调用是通过函数名和参数列表来实现的。在调用函数时,需要提供与函数声明或定义中参数列表相匹配的参数。
下面是一个调用add函数的例子:
int result = add(3, 4);
printf("3 + 4 = %d\n", result);
在上面的例子中,我们调用了add函数,并将参数`3`和`4`传递给它。add函数返回它们的和,我们将结果保存在变量result中,并输出结果。
10.3 函数的返回值
函数的返回值是函数执行完毕后返回给调用者的结果。在函数定义中,使用return语句来指定函数的返回值。
下面是一个返回两个数中较大值的函数的例子:
int max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
在上面的例子中,我们定义了一个名为max的函数,它接受两个`int`类型的参数`a`和`b`,并返回它们中较大的值。在函数体中,使用if-else语句来判断`a`和`b`的大小,并使用return语句返回结果。
10.4 函数的参数
函数的参数是在函数定义或声明中列出的变量,用于接受调用者传递给函数的值。参数可以有多个,并且可以有不同的类型。
下面是一个接受数组作为参数的函数的例子:
int sum(int arr[], int size)
{
int result = 0;
for (int i = 0; i < size; i++)
{
result += arr[i];
}
return result;
}
在上面的例子中,我们定义了一个名为sum的函数,它接受一个int类型的数组arr和数组的大小size作为参数,返回数组中所有元素的和。在函数体中,使用for循环遍历数组,并将每个元素累加到变量result中,最后返回结果。
10.5 函数的作用域
函数的作用域是指函数中定义的变量的可见范围。在C语言中,函数内部定义的变量只在函数内部可见,函数外部无法访问。
下面是一个函数作用域的例子:
int global_var = 10;
void func()
{
int local_var = 20;
printf("global_var = %d\n", global_var);
printf("local_var = %d\n", local_var);
}
int main()
{
func();
printf("global_var = %d\n", global_var);
printf("local_var = %d\n", local_var); // 错误,无法访问函数内部的变量
return 0;
}
在上面的例子中,我们定义了一个全局变量global_var和一个函数func。在func函数内部,我们定义了一个局部变量local_var。在main函数中,我们调用了func函数,并尝试访问全局变量和局部变量。可以看到,全局变量可以在函数内部和外部访问,而局部变量只能在函数内部访问。
希望这篇文章对大家初步理解C语言中的一些知识点有所帮助,感谢大家的捧场,我们下期再见!