“hello world”
‘c’
这种由单、双引号引起来 的一串字符称为字符串字面值,或者简称字符串。为什么要用引号引起来呢—这是为了区别我们定义的变量名称,例如:我们定义了int a,而下面我们要用a作为一个字符,如果不用单双引号去区分,计算机不会知道你想应用的是什么,计算机就会默认你使用的是你定义的a的数值
我们在使用字符串的时候有多重定义方式,其中也有许多细节需要注意#include
#include
#include
int main()
{
char ch1 = 'a';
char ch[] = {'a', 'b', 'c', 'd', 'e', 'f'};
char ch2[] = "abcdef";
printf("%s\n", ch);
printf("%s\n", ch2);
char ch1[] = { 'a', 'b', 'c'};
char ch2[] = "abc";
int len1 = strlen(ch1);
printf("%d\n", len1);
int len2 = strlen(ch2);
printf("%d\n", len2);
return 0;
strlen是头文件
的长度的函数。
而在以上的代码里面,我们定义了ch和ch2两个字符数组而且定义的都是一样的,但是为什么在ch和ch2输出的内容不一样而且下面使用strlen函数时为什么其输出的结果也不一样呢?
这就是我们需要注意的问题,当我们定义ch时,我们用一个一个字符去存储,当我们定义ch2时我们采用的是字符串的形式,系统会默认存储了一个\0,\0是字符串的结束标志。
所以我们在输出ch的时候没有\0,那么在输出的时候就会连这输出存储ch空间的后面空间的内容,直到遇见\0为止,那么就会出现乱码,而ch2就不会出现这种情况。
当我们将代码改为
char ch[ ] = {a,b,c,d,e,f,\0}
就不会出现类似问题了,也就是说这种定义方式需要我们去自己加上终止\0
转义字符 — 转变原来意思
转义字符主要有
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
(三字母词是:出现??)就会转变成],以前老版本会出现,现在有的编译器会出现但很少,)
\' 用于表示字符常量'
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释成一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd d d d表示1~3个八进制的数字。如:\130表示字符X
\xdd d d表示两个十六进制数字。如:\x30表示字符0
就是一个警告,电脑会发出蜂鸣
2进制使用0~1来表示 遇2进位
8进制使用0~7来表示 遇8进位
10进制 —0~9
7进制 —0~6(使用很少)
16进制是使用 0~9 加上 a~f 来表示
这些进制就是用来存储数据的一种方式,将数据以进制的方式存储在内存。
计算机默认使用就是二进制的,那我们怎么去存储字符呢?
字符不方便存储,我们就用了ASCII码,每一个ASCII码表示一个字符
现在让我们在程序里体验一下用法
#include
int main()
{
printf("%c", '\133');
//8进制的130 转换成10进制后得到88,把88作为ASCII值代码的字符
return 0;
}
输出的结果正好是133转换成十进制后得到了88,在ASCII码表中我们可以看到对应的就是 [ 符号
其转换规则和上面的类似,是将30两个十六进制的转化为10进制的ASCII码值,再将这个对应的数值打印出来
C语言注释通常以双斜杠(//)打头,也可以使用(/)打头(/)结尾来实现注释。注释是程序员为读者提供的说明,通常标识程序的一部分或者解释代码的某个方面。
以//注释的时候以//打头,到行尾结束。注释可以位于单独的一行,也可以和代码位于同一行。
以/*打头的注释包括在符号/ * 和 * /之间,而不是行尾结束,因此可以跨越多行。
提示:应使用注释来说明程序。程序越复杂,注释的价值越大。注释不仅有助于他人理解这些代码,也有助于程序员自己理解代码,特别是隔了一段时间没有接触该程序的情况下。
int main()
{
以//开头的注释是属于C++注释风格
//注释
//strlen是一个库函数
//计算的是\0之前出现的字符的个数
//
/*
int a = 10;
/
/
* C语言注释风格 - 不支持注释嵌套
* 下面代码是创建一个整型变量并赋值0
*/
int b = 0;
return 0;
}