目录
字符串 —— 就是一串字符,用“”(英文双引号)引起来的
注意:字符串的结束标志是 \0 的转义字符,字符串在结尾的位置隐藏了一个\0的字符,\0 仅仅是结束标志,在计算字符串长度的时候 sizeof() 是包含进去的,求数组的元素个数 strlen() 的时候是不算进去的。
举例1:
手动在 { 'a', 'b', 'c'} 后面加结束符 \0
#include<stdio.h>
int main(void)
{
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c', '\0'};
//打印字符串
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
运行结果:
abc
abc
举例2:
#include<stdio.h>
int main(void)
{
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c'};
//打印字符串的长度
printf("%d\n", strlen(arr1)); // string lenth
printf("%d\n", strlen(arr2));
return 0;
}
运行结果:
转义字符 —— 转变了它原来的意思
ASCII码表:每一个字符都有一个值 —— ASCII值
转义序列 | 字符值 | 在输出设备上的动作 |
---|---|---|
\’ | 单引号 | 输出字符 |
\" | 双引号 | 输出字符 |
\? | 问号 | 输出字符 |
\\ | 反斜线 | 输出字符 |
\a | 警告 | 产生声音或者视觉信号 ,windows报错声音 |
\b | 退格 | 前移一个字符 |
\f | 换页 | 移动到下一页的开端 |
\n | 换行 | 移动到下一行开端 |
\r | 回车 | 移动到当前行开始 |
\t | 水平制表符 | 移动到下一个垂直的制表对齐点 |
\v | 垂直制表符 | 移动到下一个垂直的制表对齐点 |
\ddd | 1-3个八进制的数字 | 输出字符,如:\130 输出X |
\xdd | 2个十六进制数字 | 输出字符,如:\x30 输出0 |
\ddd ddd表示1-3个八进制的数字。如:\130 X
\xdd dd表示2个十六进制数字。 如:\x30 0
举例1:
举例2:
练习题:程序输出什么?
#include<stdio.h>
int main(void)
{
printf("%d\n", strlen("c:\test\328\test.c"));
return 0;
}
答案:14
解析:求 c:\test\328\test.c 字符串长度,\t 算一个字符,\32算一个字符,8算一个字符,所以总共有14个,为什么 \328 算2个字符?因为 \ 后面没有 x ,不符合 \xdd 格式,所以 \ 后面跟的是八进制的数字,符合 \ddd 格式,八进制里面没有 8,所以 \328 算 \32 和 \8 两个字符。
printf在打印的时候可以指定打印格式
#include<stdio.h>
int main(void)
{
//printf在打印的时候可以指定打印格式
printf("%d\n", 100); //打印整数 输出 100
printf("%c\n", 'a'); //打印字符 输出 a
printf("%s\n", "abc"); //打印字符串 输出 abc
return 0;
}
注释 —— 用来解释复杂代码的
#include<stdio.h>
int main(void)
{
//int a = 10; //C++注释风格 可以注释一行也可以注释多行
/*
int b = 0;
*/ //C语言的注释风格 —— 不支持嵌套注释
return 0;
}