江苏优化网站公司哪家好,艺术字设计免费生成,手机把网站做成软件,做公益网站赚钱吗✨个人主页#xff1a; 熬夜学编程的小林
#x1f497;系列专栏#xff1a; 【C语言详解】 【数据结构详解】 C语言基本概念 1、字符串和\02、转义字符3、语句和语句分类3.1、空语句3.2、表达式语句3.3、函数调⽤语句3.4、复合语句3.5、控制语句 4、注释4.1、注释的两种形…✨个人主页 熬夜学编程的小林
系列专栏 【C语言详解】 【数据结构详解】 C语言基本概念 1、字符串和\02、转义字符3、语句和语句分类3.1、空语句3.2、表达式语句3.3、函数调⽤语句3.4、复合语句3.5、控制语句 4、注释4.1、注释的两种形式4.1.1、 /**/的形式4.1.2、//的形式 4.2、注释替换 总结 1、字符串和\0 C语言中如何表示字符串呢使用双引号括起来的⼀串字符就被称为字符串如“abcdef”就是⼀个字符串。 字符串的打印格式可以使用 %s 来指定也可以直接打印如下 #include stdio.h
int main()
{
printf(%s\n, hello C);
printf(hello c);
return 0;
}C语言字符串中⼀个特殊的知识就是在字符串的末尾隐藏放着⼀个 \0 字符这个 \0 字符是字符串的结束标志。 此处暂时不讲解如何调试只是用来证明一下真实情况。
对于字符串abcdef我们实际上看到了6个字符a,b,c,d,e,f但是实际上在末尾还隐藏⼀个 \0 的转义字符 \0 是字符串的结束标志。所以我们在使用库函数 printf()*打印字符串或者strlen()*计算字符串长度**的时候遇到 \0 的时候就自动停止了。
C语言中也可以把⼀个字符串放在⼀个字符数组中我们在这里利用下面的代码验证⼀下 \0 的功能。
#include stdio.h
int main()
{
char arr1[] {a, b, c};//arr1数组中存放3个字符
char arr2[] abc; //arr2数组中存放字符串
printf(%s\n, arr1);
printf(%s\n, arr2);
return 0;
}这样的代码我调试的时候观察⼀下 arr1 和 arr2 的内容 我们可以看到 arr1 字符数组在打印的时候打印了 a 、 b 、 c 后还打印了⼀些随机值这就是因为 arr1 在末尾的地方没有 \0 字符作为结束标志在打印的时候没有停止。但是 arr2 的打印就是完全正常的就是因为 arr2 数组是使用字符串常量初始化的数组中有 \0作为结束标志打印可以正常停止。 如果我们在arr1数组中单独放⼀个’\0’字符会怎么样呢
#include stdio.h
int main()
{
char arr1[] {a, b, c, \0};
char arr2[] abc;
printf(%s\n, arr1);
printf(%s\n, arr2);
printf(%s\n, abc\0def);
return 0;
}看到三次打印的结果是⼀样的了都是打印到 \0 的时候就停止了那从上述的例子我们确实能够观察到 \0 的作用和重要性的。
2、转义字符 也许在前⾯的代码中你看到 \n , \0 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符转义字符顾名思义转变原来的意思的字符。 比如我们有字符 n 在字符串中打印的时候自然能打印出这个字符如下
#include stdio.h
int main()
{
printf(abcndef);
return 0;
}输出的结果
如果我们修改⼀下代码在 n 的前⾯加上 \ ,变成如下代码
#include stdio.h
int main()
{
printf(abc\ndef);
return 0;
}我们可以看到修改的前后代码输出的结果截然不同的那这是为什么呢 这就是转义字符的问题 \n 是⼀个转义字符表示换行的意思我们可以简单的理解为 \ 让 n 的意思发⽣了转变 n 本来是⼀个普通的字符被 \ 转义为换行的意思。
C语言中像这样的转义字符还有⼀些具体如下 • ? 在书写连续多个问号时使用防止他们被解析成三字母词在新的编译器上没法验证了。 • ’ 用于表示字符常量’ • 用于表示⼀个字符串内部的双引号 • \ 用于表示⼀个反斜杠防止它被解释为⼀个转义序列符。 • \a 警报这会使得终端发出警报声或出现闪烁或者两者同时发生。 • \b 退格键光标回退⼀个字符但不删除字符。 • \f 换页符光标移到下⼀页。在现代系统上这已经反映不出来了行为改成类似于 \v 。 • \n 换行符。 • \r 回车符光标移到同⼀行的开头。 • \t 制表符光标移到下⼀个水平制表位通常是下⼀个8的倍数。 • \v 垂直分隔符光标移到下⼀个垂直制表位通常是下⼀行的同⼀列。
下⾯2种转义字符可以理解为字符的8进制或者16进制表示形式 • \ddd ddd表示1~3个八进制的数字。如\130表示字符X • \xdd dd表示2个十六进制数字。 如\x30表示字符0 • \0 null字符代表没有内容 \0 就是 \ddd 这类转义字符的⼀种用于字符串的结束标志其ASCII码值是0。
代码演示
#include stdio.h
int main()
{
printf(%c\n, \);//结果为
printf(%s\n, \);//结果为
printf(c:\\test\\code\\test.c\n);//结果为c:\test\code\test.c
printf(\a);//振动一下
printf(%c\n, \130); //130是8进制转换成10进制是88以88作为ASCII码值的字符是X
printf(%c\n, \x30); //x30中的30是16进制转换成10进制是48以48作为ASCII码值的0
return 0;
}结果展示
转义字符参考转义字符
3、语句和语句分类
C语言的代码是由⼀条⼀条的语句构成的C语言中的语句可为以下五类 • 空语句 • 表达式语句 • 函数调用语句 • 复合语句 • 控制语句 3.1、空语句
空语句是最简单的⼀个分号就是⼀条语句是空语句。
#include stdio.h
int main()
{
;//空语句
return 0;
}空语句⼀般出现的地方是这里需要⼀条语句但是这个语句不需要做任何事就可以写⼀个空语句。
3.2、表达式语句
表达式语句就是在表达式的后边加上分号。 如下所示
#include stdio.h
int main()
{
int a 20;
int b 0;
b a 5; //表达式语句
return 0;
}3.3、函数调⽤语句
函数调用的时候也会加上分号就是函数调用语句
#include stdio.h
int Add(int x, int y)
{
return xy;
}
int main()
{
printf(hehe\n);//函数调⽤语句
int ret Add(2, 3);//函数调⽤语句
return 0;
}3.4、复合语句
复合语句其实就是前面讲过的代码块成对括号中的代码就构成⼀个代码块也被称为复合语句。
#include stdio.h
void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句
{
int i 0;
for(i0; isz; i)
{
printf(%d , arr[i]);
}
}
int main()
{
int i 0;
int arr[10] {0};
for(i0; i10; i) //for循环的循环体的⼤括号中的就是复合语句
{
arr[i] 10-i;
printf(%d\n, arr[i]);
}
return 0;
}3.5、控制语句
控制语句用于控制程序的执行流程以实现程序的各种结构⽅式C语言支持三种结构顺序结构、选择结构、循环结构它们由特定的语句定义符组成C语言有九种控制语句。
可分成以下三类 1、条件判断语句也叫分⽀语句if语句、switch语句 2、 循环执⾏语句do while语句、while语句、for语句 3、转向语句break语句、goto语句、continue语句、return语句。 后期会给大家⼀⼀介绍控制语句。 4、注释 • 注释是对代码的说明编译器会忽略注释也就是说注释对实际代码没有影响。 • 注释是给程序员自己或者其他程序员看的。 • 好的注释可以帮我们更好的理解代码但是也不要过度注释不要写没必要的注释。 当然不写注释可能会让后期阅读代码的人抓狂。 • 写注释⼀定程度上反应了程序作者的素质建议大家写必要的注释在未来找工作的时候写代码时留下必要的注释也会给面试官留下更好的印象。 4.1、注释的两种形式
C语言的注释有两种表示方法。
4.1.1、 /**/的形式
第⼀种方法是将注释放在/* … */ 之间内部可以分行。
/* 注释 */
/*
这是⼀⾏注释
*/这种注释可以插在行内。
int fopen(char* s /* file name */, int mode);上⾯示例中 /* file name */ ⽤来对函数参数进行说明跟在它后⾯的代码依然会有效执行。 这种注释⼀定不能忘记写结束符号 */ 否则很容易导致错误。
代码示例
printf(a ); /* 注释⼀
printf(b );
printf(c ); /* 注释⼆ */
printf(d );上面示例的原意是第⼀行和第三行代码的尾部有两个注释。 但是第⼀行注释忘记写结束符号导致注释⼀延续到第三行结束。 /**/ 的这个注释也不支持持嵌套注释 /* 开始注释后遇到第⼀个 */ 就认为注释结束了。
代码示例
/*
printf(a );
printf(b );
printf(c ); /* 注释⼆ */
printf(d );
*/上述示例的意愿是整个代码都注释掉但是由于/ * * /不能嵌套注释导致前面三行被注释了而第四行没有被注释。 总之尽量不要用/* */来进行嵌套注释很有可能造成不必要的错误。尽量使用//。
4.1.2、//的形式 第⼆种写法是将注释放在双斜杠 //后⾯从双斜杠到行尾都属于注释。这种注释只能是单行可以放在行首也可以放在⼀行语句的结尾。这是C99标准新增的语法。 // 这是⼀⾏注释
int x 1; // 这也是注释不管是哪⼀种注释都不能放在双引号里面。 双引号里面的注释符号会成为字符串的⼀部分解释为普通符号失去注释作⽤。
printf(// hello /* world */ );上面示例中双引号里面的注释符号都会被视为普通字符没有注释作用。
4.2、注释替换
编译时注释会被替换成⼀个空格所以 min/* 这是注释*/Value 会变成 min Value 而不是 minValue 。
总结
本篇博客就结束啦谢谢大家的观看如果公主少年们有好的建议可以留言喔谢谢大家啦