1. main函数是程序的入口,一个工程中main函数有且仅有一个
2. 数据类型
(1)char 字符数据类型
(2)short 短整形
(3)int 整形
(4)long 长整形
(5)long long 更长的整形
(6)float 单精度浮点数
(7)double 双精度浮点型
注:(1)C语言没有字符串类型
(2) sizeof是一个操作符(运算符),sizeof 是用来计算变量或者类型所占据内存的大小-单位是字节,任何类型都可以使用,只关注空间大小,sizeof的括号只有在计算数据类型(int...)大小时才不可省略
(3)strlen是一个函数,计算的是字符串的长度,并且只能针对字符串,关注的字符串中是否有\0,计算的是\0之前的字符个数
(3)sizeof计算值包含隐藏的\0(字符串中),而strlen计算的为有效值因此不含\0,使用strlen计算字符长度时,如果是单个字符计算需带上\0( 单个字符不会默认带上\0,并且strlen在单个字符中的\0不会计入长度但是sizeof会 )不然为随机值,strlen根据\0为结束标志,而字符串不需要是因为字符串隐藏了\0(此处的 \0为一个字符)
(4) char归属于整形
#include <string.h>
int main()
{
//可以把字符串放在字符数组中
char ch = "abc";//err
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c', '\0'};
char arr3[] = {'a', 'b', 'c'};
printf("%d\n", strlen(arr1));//自带隐藏的\0,所以为3
printf("%d\n", strlen(arr2));//因为\0不算,所以为也为3
printf("%d\n", strlen(arr3));//没有\0,所以为随机值
printf("%d\n", sizeof(arr1));//因为有隐藏的\0,所以为4
printf("%d\n", sizeof(arr2));//4个字符,所以为4
printf("%d\n", sizeof(arr3));//3个字符,所以为3
//strlen
//string length - 求字符串长度的函数
int len = strlen("abc");
printf("%d\n", len);
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", "hehe");
printf("hehe\n");
return 0;
}
(4)使用strlen函数需使用 #include <string.h> 头文件
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}
这行代码即可测算出每种类型的大小
3. 常量、变量
(1)变量
( 创建变量时最好初始化变量,不然变量的值为随机值 )
Ⅰ. 局部变量
Ⅱ. 全局变量
#include <stdio.h>
int global = 2021;//全局变量
int main()
{
int local = 2020;//局部变量
//下面定义的global会不会有问题?
int global = 2021;//局部变量
printf("global = %d\n", global);
return 0;
}
注1:当局部变量和全局变量同名的时候,局部变量优先使用。
注2:scanf使用时,切勿忘记‘&’
Ⅲ. 变量的作用和生命周期
a. (1) 局部变量的作用域是变量所在的局部范围。
(2)全局变量的作用域是整个工程。
b. (1)局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
(2)全局变量的生命周期是:整个程序的生命周期。
(2)常量
a. 字面常量
b. const 修饰的常变量
c. #define 定义的标识符常量
d. 枚举常量(enum)
(以下代码为例子)
#include <stdio.h>
//举例
enum Sex //定义枚举常量
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
注1:枚举常量的默认是从0开始,依次向下递增1的
注2:
上面例子上的pai被称为const修饰的常变量,const修饰的常变量在C语言中只是在语法层面限制了
变量pai不能直接被改变,但是pai本质上还是一个变量的,所以叫常变量。
4. 字符串
需要“”括起来,字符则使用‘’括起来
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
(1)转义字符
注:转义字符=一个字符
//打印目录的错误例子:
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
//打印一个'
//打印一个"
#include <stdio.h>
int main()
{
//问题1:在屏幕上打印一个单引号',怎么做?
//问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
printf("%c\n", '\'');
printf("%s\n", "\"");
return 0;
}
//笔试题:
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
// \62被解析成一个转义字符
printf("%d\n", strlen("c:\test\628\test.c"));
return 0;
}
已列出一些转义字符:
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如: \x30 0
注: ??) 三字母词 --> ]
5. 注释
注释有两种风格:
C语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释
C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行
1. 代码复杂,最好加上注释
2. 代码暂时不要的时候,也可以注释掉