1.注释
第一种注释:/*printf("%d\n")*/是c语言的注释风格,优点是一次可以注释多行代码,缺点是不支持嵌套注释。
第二种注释://printf("%d\n")是c++的注释风格。
写注释的重要性:
(1)写注释可以帮助自己理清思路。
(2)写一些复杂的代码时写注释可以帮助别人理解自己代码,也方便自己日后看的时候可以迅速回忆起当时的想法。
2.%的用法
(1)%d 打印整形
(2)%c 打印字符
(3)%s 打印字符串
(4)%f 打印float类型的数据
(5)%lf 打印double类型的数据
(6)%zu 打印sizeof的返回值
3.数组
#include<stdio.h>
int main()
{
? ?int arr[10] = { 10,11,12,13,14,15,16,17,18,19 };//创建数组,arr中有10个元素
? ?int arr2[] =?{ 1,2,3 };//arr2中有三个元素,当[]中没有数据时,编译器会自动匹配空间
//数组的下标是从零开始的
//arr[8]访问的是第九个元素
? ? printf("%d\n", arr[8]);
? ? int i = 0;
? ? while (i < 10)
? ? {
? ? ? ? ? printf("%d", arr[i]);
? ? ? ? ? i = i + 1;
? ? ?}
return 0;
}
4.数组的下标
c语言规定:数组的每个元素都有一个下标,下标是从0开始的。
数组可以通过下标来访问。
5.数组的使用
#include<stdio.h>
int main()
{
? ? char arr[4] = { 'b','i','t' };//没有转义字符'\0'
? ? //不完全初始化,剩余部分默认初始化为0
? ? //C99标准之前,数组的大小都是常量或者常量表达式来指定
? ? int arr2[10] = { 0 };//常量
? ? int arr3[4 + 6] = { 1,2,3,4 };//常量表达式
? ? //C99标准之后,支持了变长数组,这个时候允许数组的大小是变量,但是这种方式的数组是不能初始化的。
? ? int m = 100;
? ? int arr4[m] = { 0 };//不可以这么写
? ? int arr4[m];可以这样写
//计算数组中字符串的长度:strlen()函数
? ? printf("%d\n", strlen(arr));//没写转义字符'\0',打印结果为随机值
? ?return 0;
}
6.操作符
(1)算数操作符:+? -? *? /? %
(2)移位操作符:>>? <<
(3)位操作符(设计二进制的运算):& ^ |
(4)赋值操作符 :=? +=? -=? *=? /=? &=? ^=? |=? >>=? =<<
算术操作符:
#include<stdio.h>
int main()
{
? ??int a = 7 /?2;除法
? ??int b = 7 % 2;//取模(求余数)
? ??printf("%d\n", a);
? ? printf("%d\n", b);
//除号的两端都是整数的时候,执行的是整数除法,如果两端只有一个浮点数就执行浮点数的除法。
? ?float a =7 / 2.0;
? ?int b = 7 % 2;
//取模操作符的两个操作数只能是整数
? ? printf("%.2f\n", a);
? ? print("%d\n", b);
? ? return 0;
}
赋值操作符:
int main()
{
? ? int a = 0;//初始化
? ? a = 20;//赋值
? ? a = a + 3;//a=23
? ? a -= 3;//a = a - 3;
? ? return 0;
}
7.单目操作符——只有一个操作数的操作符
(1)!? ?:逻辑反操作,把真的变成假的,把假的变成真的。c语言中0表示假,非0表示真。
(2)-? ?:负值
(3)+? :正值
(4)&? :取地址
(5)sizeof? :操作数的类型长度(以字节位单位)
(6)~? :对一个数的二进制按位取反
(7)--? :--前置、后置--
(8)++ :++前置、后置++
(9)*? :间接访问操作符(解引用操作符)
(10)(类型)强制类型切换
8.关系操作符
(1)> :大于
(2)>= :大于等于
(3)< :小于
(4)<= :小于等于
(5)!=:用于测试"不相等"
(6)==:用于测试”相等“
9.逻辑操作符
(1)&&:逻辑与,并且(两个同时满足)
(2)||:逻辑或,或者(一个满足即可)
(3)条件操作符(三目操作符:有三个操作符):exp1?exp2:exp3(若exp1为真则输出exp2,若而小盘为假则输出exp3)
(4)逗号表达式:就是用逗号隔开的一串表达式,特点是:从左向右依次计算,整个表达式的结构式最后一个表达式的结果。
(5)[]:下标引用操作符
(6)():函数调用操作符
(7)|.:
(8)->:
10:c语言中的一些常见关键字——c语言本身内置的,关键字不是自己创建出来的,也不能自己创建。
(1)auto:所有的局部变量之前都有一个auto,自动创建,自动销毁
(2)break:跳出循环,常与for/while/do while/break一起使用
(3)case:开关分支语句与switch一起使用
(4)char:字符型数据类型
(5)const:常属性
(6)continue:用于循环语句
(7)default:分支语句
(8)do:循环语句
(9)double:双精度变量或函数
(10)else:分支语句
(11)enum:枚举数据类型
(12)extern:声明外部符号的
(13)float:浮点型变量数据类型
(14)for:循环语句
(15)goto:实现跳转的语句
(16)if:循环语句
(17)int:整形数据类型
(18)long:长整型数据类型
(19)register:寄存器
(20)return:函数返回值
(21)short:数据类型
(22)signed:有符号的
(23)unsigned:无符号的
(24)sizeof:计算大小的关键字
(25)static:
a.修饰局部变量(局部变量出了作用域,不消毁。本质上,static修饰局部变量的时候,改变了变量的储存位置。影响了变量的声明周期,生命周期边长,和程序的生命周期i一样)
b.修饰全局变量(全局变量是具有外部链接属性的,static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性。其他源文件(.c)文件就不能再使用这个全局变量了。我们在使用的时候,就感觉作用域变小了)
c.修饰函数(函数是具有外部链接属性的,一个函数本来是具有外部链接属性的,但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就无法使用了)
(26)struct:结构体
(27)switvh:自定义类型
(28)struct:结构体
(29)typedef:类型的定义,可以理解为类型的重命名
(30)union:联合体
(31)void:无返回值或参数,无指针类型
(32)volatile:变量在程序执行中可被隐含地改变
(33)while:循环语句的循环条件
11.变量的命名
(1)有意义
(2)名字必须是字母、数字、下划线组成,不能有特殊字符,同时不能以数字开头
(3)变量名不能是关键字