文章目录
一、字符串
"hello bit.\n"
这种由 双引号(Double Quote)引起来的一串字符 称为字符串字面值(String Literal), 或者简称 字符串。
字符串的结束标志是一个 \0 的转义字符。
注:在计算字符串长度的时候 \0 是结束标志,不算作字符串内容
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
char arr3[] = { 'a','b','c','\0' };
printf("%s\n", arr1); 输出结果:abc
printf("%s\n", arr2); 输出结果:abc烫烫烫烫蘟bc
printf("%s\n", arr3); 输出结果:abc
return 0;
}
解释arr2:直到碰到结束标志 \0 才会停止继续读取,所以abc之后的都是 乱码
printf 以 %s 打印字符串 的时候,就从你给的地址开始打印,一直打印到遇到 ‘\0’ ,停止。
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
char arr3[] = { 'a','b','c','\0' };
printf("%d\n", strlen(arr1)); 输出结果:3
printf("%d\n", strlen(arr2)); 输出结果:15 错误,15是随机值
printf("%d\n", strlen(arr3)); 输出结果:3
return 0;
}
注:在计算字符串长度的时候 \0 是结束标志,不算作字符串内容
strlen(arr2) 得到的结果15,是随机值,(每个 电脑/编译器 得到的值,都是不一样的,因为这是随机的),strlen()一直到遇到 结束标志 ‘\0’ 为止
1.补充知识点:函数 strlen( )
如果要用 strlen( ),必须加上头文件:#include <string.h>
2.补充知识点:单目操作符 sizeof
sizeof :操作数的类型长度(以字节为单位)
int main()
{
int a = 10;
printf("%d\n", sizeof(a)); 输出结果:4
printf("%d\n", sizeof(int)); 输出结果:4
return 0;
}
int main()
{
int a = 10;
printf("%d\n", sizeof a); 输出结果:4
printf("%d\n", sizeof (a)); 输出结果:4
return 0; sizeof(a) 和 sizeof a
} 这说明:sizeof 是 操作符,而不是 函数
sizeof(a) 和 sizeof a
这说明:sizeof 是 操作符,而不是 函数
C语言规定:sizeof(long) >= sizeof(int)
int main()
{
printf("%d\n", sizeof(short)); 2 单位:字节
printf("%d\n", sizeof(int)); 4
printf("%d\n", sizeof(long)); 4
printf("%d\n", sizeof(long long)); 8
printf("%d\n", sizeof(float)); 4
printf("%d\n", sizeof(double)); 8
return 0;
}
3.补充知识点:转义字符
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词,(因为,在老一点的编译器中,将 ??) 翻译成 方括号 ] ) |
\' | 用于表示字符串常量 ' |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字 |
\xdd | dd表示2个十六进制的数字 |
%% | 用于输出 % |
其中 制表符 \t ,制表符的宽度大小可以在编译器中设置。
方法如下:
工具 -->选项 --> 文本编辑器 --> C/C++ --> 制表符
4.补充知识点:转移字符 \ddd(8进制) 和 \xdd(16进制)
\ddd ddd表示1~3个八进制的数字。如:\130 对应 X
1~3个八进制:哪怕只有1个数字,也是可以的
int main()
{
char test = '\130';
printf("%c ", test);
return 0; 输出结果:X
}
如何理解“1~3个”八进制?
8进制是0~7,因此 8 是一个字符,\320是一个字符
其中,\32和\320效果是一样的
从这里你就可以明白:为什么说是1~3个了
int main()
{
printf("%d ", strlen("\3208")); 输出结果:2 \320 和 8
printf("%d ", strlen("\328")); 输出结果:2 \32 和 8
return 0;
}
\xdd dd表示2个十六进制的数字。如:\x30 对应 0
int main()
{
char test = '\x30';
printf("%c ", test);
return 0; 输出结果:0
}
A 的ASCII值是 65
a 的ASCII值是 97
对应的大小写字母相差 32
5.补充知识点:基本单位
bit 比特位
byte=8bit
kb=1024byte
mb=1024kb
gb=1024mb
tb=1024gb
pb=1024tb
二、求 字符串长度
1.利用函数strlen( )---------->添加头文件: #include <string.h>
添加头文件: #include <string.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
char arr3[] = { 'a','b','c','\0' };
printf("%d\n", strlen(arr1)); 输出结果:3
printf("%d\n", strlen(arr2)); 输出结果:15 错误,15是随机值
printf("%d\n", strlen(arr3)); 输出结果:3
return 0;
}
注:在计算字符串长度的时候 \0 是结束标志,不算作字符串内容
strlen(arr2) 得到的结果15,是随机值,strlen()一直到结束标志 ‘\0’ 为止
2.利用操作符 sizeof --------->比用strlen( ) 多算一个 ‘\0’
int main()
{
char arr1[] = "abcd";
char arr2[] = { 'a','b','c','d' };
char arr3[] = { 'a','b','c','d','\0' };
int a = sizeof(arr1) / sizeof(arr1[0]); 输出结果:5
int b = sizeof(arr2) / sizeof(arr2[0]); 输出结果:4
int c = sizeof(arr3) / sizeof(arr3[0]); 输出结果:5
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
return 0;
}
多一个结束标志:‘\0’
三、注释(无关紧要,了解即可,天天用的)
方法一://
方法二:/*:注释一行或者多行(缺点:不能嵌套)
int main()
{
/*int a = 0;
/*int b = 10;
return 0;*/
}