字符和字符串
许多时候,我们写程序的时候都会有单引号'',和双引号"",许多人不知道其中的区别。
字符
我们先说字符,字符就是一个一个的符号,比如说1,a, (空格),;这些都叫做字符。在C语言中,常用单引号''来表示一个字符。比如'a',表示字符a。'1',表示字符1。
但是我们需要注意了:字符是字符,数字是数字。'1'不等于1。什么意思呢?我们需要明白一个概念,叫做Ascii码表。我们都知道,计算机其实只能识别数字0和1。那么怎么表现出来这么多字符的呢?其实,一开始我们就在计算机中写入了这些字符,然计算机记住这些字符,当我们写一个数字65的时候,计算机就知道是字符A。
举个例子
#include <stdio.h> int main() { printf("%d\n", '1'); //字符1,查ascii可以知道字符1,是对应49 printf("%d\n", 1); //数字1 printf("%c\n", 65); //数字65,注意,这里是%c表示打印字符 printf("%c\n", 'A'); //字符A return 0; }
我们可以看到结果如下,字符'1'打印出来的结果是49,查ascii码表知道,字符1就是49。而数字1,打印出来就是1。接下来我们打印字符,我们发现65和'A'打印结果一样。查表就可以得知,字符'A'对应65。
知道了这些概念之后,我们其实可以利用字符表示一个比较大的数字,并且进行数学运算。
下面我们将字符'A'减去40,就可以想到于是65-40,最后打印出来25。
#include <stdio.h> int main() { printf("%d\n", 'A'-40); //25 return 0; }
字符串
字符串其实就是多个字符的组合,他用双引号""来表示。不过我们需要注意,每一个字符串最后面都有一个\0。什么意思呢?看代码
#include <stdio.h> #include<string.h> //strlen函数所需头文件,strlen可以计算出字符串的字符个数 int main() { printf("%d\n", strlen("abc")); //3 printf("%d\n", sizeof("abc")); //4 return 0; }
为什么一个是3一个是4呢?首先,我们可以知道abc只有3个字符,所以第一个代码可以理解。第二个的话,我们知道,一个字符就是char型数据,而char占一个字节。如果是abc的话,应该是占3个字节才对啊。我上面说了,每一个字符最后面都有一个\0,而\0也是char型的数据,所以一共有4个字节。
转义字符
现在,假设我们想打印出来\n,应该怎么做呢?我们都知道,\n是用来换行的,如果直接打印\n肯定不行,而且计算机中还有许多和\n同样的转义字符。
如果我们需要打印这些字符怎么办呢?那么我们就需要说到转义字符'\'了。
#include <stdio.h> int main() { printf("\n"); //换行 printf("\\n"); //打印\n return 0; }