xxx.c--源文件;xxx.h--头文件
C语言是从主函数的第一行开始执行的,所以C语言代码得有main函数(入口)
“printf”是一个库函数--打印函数;而“printf”函数是在stdio.h头文件里面的,得先引入头文件。“scanf”--输入函数,且在使用VS编译器时可能会报错,推荐在源文件第一行加上以下代码
#define _CRT_SECURE_NO_WARNINGS 1
运行代码的快捷键:crtl+F5
#1.写出主函数(main函数)
#include <stdio.h>
int main()
{
printf()
return 0;
}
注:一个工程(project)中可以有多个源文件(.c文件、.cpp文件);但是多个源文件中只能有一个主函数(main函数)。
数据类型:
数据大小(bite字节) | ||
char | 字符数据类型 | 1 |
short | 短整型 | 2 |
int | 整型 | 4 |
long | 长整型 | 4 |
long long | 更长的整形 | 8 |
float | 单精度浮点数 | 4 |
double | 双精度浮点数 | 8 |
变量:局部变量和全局变量
常量:字面常量;const修饰的常变量;#define定义的标识常量;枚举常量。
#define a 100;
const int num = 10;
enum Sex
{
man
woman
};
这里的“num”变量不可再修改,具有常属性,本质上还是一个变量。
字符串的结束标志:转义字符“\0”(再计算字符串长度的时候不计入)。
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量 |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符、蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 |
\xdd | dd表示2个十六进制数字。 |
操作符:
算术操作符:+ - * / %
移位操作符:》 《
位操作符:&(按位或) |(按位异) ^(按位异或)
单目操作符:!- + & sizeof ~ -- ++ ✳
一个整数的二进制表示有3种:原码、反码、补码。
(原码取反=反码)+1=补码(符号位不用取反)
第一位为(符号):例如“-1”:100000000000000000000001(原码)、
11111111111111111111111111111110(反码)、
11111111111111111111111111111111(补码)。
而整数在内存中储存的是补码。
前置++:先++再使用;后置++:先使用再++。
逻辑操作符:&&(逻辑与)、||(逻辑非)
条件操作符(三目操作符):exp1 ?exp2 :exp3
下标引用、函数调用和结构成员:[ ] 、()、. 、->
static修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)
栈区 | 堆区 | 静态区 |
局部变量、函数的参数 | 动态内存分配 | 全局变量、static修饰的静态变量 |
static修饰全局变量(函数),使得这个全局变量(函数)只能再自己所在的源文件(.c)内部可以使用,其他源文件不能使用。
全局变量在其他源文件内部可以被使用,是因为全局变量具有外部链接属性。但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了。