既然是初识,那就只是浅浅的去了解C语言而已,并不深入(怎么感觉有点像渣男)
前言
这一篇笔记主要是初步的了解C语言,所以并不会过多的深入,就像找女朋友一样,先去了解,再去深入。
例如:初识字符串,转义字符,选择语句,选择语句,循环语句,函数&&数组,操作符,常见关键字,常亮和宏,指针等等…
字符串+转义字符+注释
1.初识字符串
C语言里面:字符串就是一串字符 – 用双引号括起来的一串字符。
字符串
"hello work.\n"//这样就被称为一个字符串
字符串的结束标志是一个\0
的转义字符,在计算字符串长度的时候\0
是结束标志,不算作字符串内容。
int main(){
char arr[] = "hello";
//虽然这里看到的是五个字符,但其实在计算机里面是“hello\0”
//字符串在结尾的位置隐藏了一个\0的字符
//\0是字符串的结束标志
return 0;
}
接下来是一段验证代码,可以猜一下在这段代码里,len
,arr1
和arr2
分别打印的结果是什么。
#include<string.h>
int main(){
char arr1[] = "abb";
char arr2[] = {'a', 'b', 'b'};
int len = strlen("abb");//string length
//strlen需要引用头文件#include<string.h>
printf("%d\n", len);
//打印字符串
printf("%s\n", arr1);//%s - 字符串
printf("%s\n", arr2);
return 0;
}
说实话,对于我这种菜鸟来说结果其实是有点出乎意料的
len
打印的结果为3。
arr1
打印的结果为abb。
arr2
打印的结果为abb,接着后面一串乱码。
注:字符串的结束标志是一个\0
的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容。
原因其实是在计算字符串长度的时候,到\0就会停止,而在arr2中因为每个字符都用单引号(’ ')给包住了,这里面并没有包含\0的存在,所以会一直计算直到找到\0为止。
知道了这个原因后,我们再来看一段代码
#include<string.h>
int main(){
char arr1[] = "abb";
char arr2[] = {'a', 'b', 'b'};
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
//这里的arr1打印结果为3,arr2的打印结果为随机值
return 0;
}
有了之前的理论,我们不难发现,arr1
这个字符串因为里面带有\0
的存在,所以能计算得出是3,而arr2却因为没有\0
的存在,导致一直在计算直到找到\0
为止,所以打印出来的结果为随机值。
在这个基础之上,我们再改进一下代码
#include<string.h>
int main(){
char arr1[] = "abb";
char arr2[] = {'a', 'b', 'b', '\0'};
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
//此时的arr1和arr2打印结果就都为3了
return 0;
}
重要的事情说三遍:字符串的结束标志是一个\0
的转义字符,在计算字符串长度的时候\0
是结束标志,不算作字符串内容。
2.初识转义字符
话不多说,直接看码!猜一下这段代码打印出来的结果
#include<stdio.h>
int main(){
printf("c:\test\test.c\n");
return 0;
}
打印结果为c: es. est.c
这里的打印结果没有达到预期,其实是转义字符\t
在里面搞鬼了,转变了原来的意思。
接下来再看一段代码
#include<stdio.h>
int main(){
printf("ab\ncd");//这里的\n就是转义字符,代表转行。
printf("%s\n", "\"");//这里的\就是转义"让它可以打印,
//如果没有\的话这里的双引号就会发生语法错误
return 0;
}
这里需要补充一个知识:
%d
- 整数类型
%c
- 单字符类型
%s
- 字符串类型
这里还是代码实例
#include<stdio.h>
int main(){
printf("%d\n", 100);//整型不用加符号
printf("%c\n", 'a');//单字符型用 ' '
printf("%s\n", "a");//字符串类型用 " "
return 0;
}
有了以上的铺垫,此时我们再尝试把一开始的代码打印出来看看。
打印出符合预期的代码
#include<stdio.h>
int main(){
printf("c:\\test\\test.c\n");
return 0;
}
\\
:用于表示一个反斜杠,防止它被解释为一个转义序列符
这样我们的代码就可以正确的打印出c:\test\test.c
了。
除此之外我们还有很多不同的转义字符,如:
\a
: 警告字符,蜂鸣
\b
: 退格符
\f
: 进纸符
\n
: 换行
\r
: 回车
\t
: 水平制表符
\tv
: 垂直制表符
\ddd
: ddd表示1~3 个八进制的数字。如: \130x
\xdd
: dd表示2个十六进制数字。如: \x30 0
当然,这些转义字符也不是必用的,只要知道以上这些是转义字符就可以了。
有了上面的知识储备后,我们再来看下面一段代码
打印出的结果是多少
#include<stdio.h>
int main(){
printf("%d\n", strlen("c:\test\328\test.c"));
return 0;
}
结果为14。
\t
算一个转义字符,\32
算一个转义字符。为什么是\32
而不是\328
呢,是因为\ddd
表示的是1~3个八进制的数字,而八进制数字里面是没有8的,所以这里的\32
并没有带8一起玩。
补充一个小知识:八进制是由0,1,2,3,4,5,6,7这八个数字组成的。
3.注释
注释,是用来解释复杂代码的,是用来增强代码可读性的。
//
是常用的注释方法
/* 注释 */
这种注释风格 - 不支持嵌套注释。
总结
以上内容主要说明了:
1、C语言里的字符串是由" "
(双引号)括起来的一串字符所组成。
2、转义字符使用需谨慎,要先去了解再去使用。
3、注释的使用方法。