目录
一、字符串
由双引号引起来的一串字符称为字符串字面值,或者简称字符串。例如:"abcde" 字符串的结束标志是\0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串内容。
#include <stdio.h>
#include <string.h>
int main()
{
char arr[]="abcde";
printf("%s\n", strlen(arr[0]));
//注意引用strlen()函数时,需要引用string.h头文件
return 0;
}
//输出结果为5
打印以下代码会出现什么结果?
#include <stdio.h>
int main()
{
char arr1[] = "hello";
char arr2[] = {'h','e','l','l','o'};
char arr3[] = {'h','e','l','l','o','\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
arr2为什么会出现乱码?
因为arr2没有设置数组大小,又因为\0是字符串的结束标志,arr2何时结束,当找到\0时arr2输出结束。(当测量arr2的长度时,结果为随机值)
二、转义字符
当我们要打印一个目录:c:\code\test.c
代码将如何书写?
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
打印出的结果是否为 c:\code\test.c ?
\c \t \n 都没有打印出来,原因是因为,\c \t \n 是转义字符,而什么是转义字符?
转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。对于一个给定的字母表,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。转义字符顾名思义就是转变意思。以下是一些转义字符的释义:
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 X |
\xdd | dd表示2个十六进制数字。 如: \x30 0 |
三、注释
1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
注释有两种风格:
C语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释
C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行
四、循环语句
C语言中如何实现循环呢?
while语句
for语句
do ... while语句
while (表达式)
{
语句;
}
for ([表达式1];[表达式2];[表达式3])
{
语句;
}
do 语句 while (表达式);
五、函数
#include <stdio.h>
int Add(int x, int y)
{
int z = x+y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("sum = %d\n", sum);
return 0;
}
函数的特点就是简化代码,代码复用。
当函数体在main函数后,函数需要在main函数前进行函数声明,如下:
#include <stdio.h>
//函数的声明(用extern)
extern int Add(int x, int y);
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("sum = %d\n", sum);
return 0;
}
int Add(int x, int y)
{
int z = x+y;
return z;
}
六、数组
6.1数组定义
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
6.2数组下标
C语言规定:数组的每个元素都有一个下标,下标是从0开始的。
数组可以通过下标来访问的。
int arr[10] = {0};
//如果数组10个元素,下标的范围是0-9
6.3数组的使用
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
//输出结果为数组内容
七、操作符
算术操作符 | + - * / % |
移位操作符 | >> << |
位操作符 | & ^ | |
赋值操作符 | = += -= *= /= &= ^= |= >>= <<= |
单目操作符
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置-- |
++ | 前置、后置++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
关系操作符
> | |
>= | |
< | |
<= | |
!= | 用于测试“不相等” |
== | 用于测试“相等” |
逻辑操作符
&& | 逻辑与 |
|| | 逻辑或 |
条件操作符
exp1 ? exp2 : exp3 |
逗号表达式
exp1, exp2, exp3, …expN |