Primary:C(一、入门)

预编译头文件

#include   
// 预处理器指令, C 编译器在编译前要包含 stdio.h 文件 

基本语法

C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号.

数据类型

1.基本类型:整数类型和浮点类型
2.枚举类型:算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量
3.void类型:类型说明符 void 表明没有可用的值
4.派生类型:包括指针类型、数组类型、结构类型、共用体类型、函数类型
运算符:sizeof(int)  //可获取对象或类型的存储字节大小

变量

char :通常是一个字节,这是一个整数类型
int:    对机器而言,整数的最自然的大小
float:单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数
double:双精度浮点值。双精度是1位符号,11位指数,52位小数
void:表示类型缺失

C 中的变量定义
告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型
eg:  int  a;

常量

//整数常量
整数常量可以是十进制、八进制或十六进制的常量
前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制
后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)
//浮点常量
浮点常量由整数部分、小数点、小数部分和指数部分组成
带符号的指数是用 e 或 E 引入的
//字符常量
\r  回车
\n  换行
//定义常量
1.使用#define预处理器
2.使用 const 关键字

存储类

auto 存储类
//auto 存储类是所有局部变量默认的存储类  类似于JS中的局部变量
register存储类
//register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 '&' 运算符(因为它没有内存位置)
static 存储类
//static 修饰后,不会在每次调用时重置,必须得在同意文件中
extern 存储类
//extern 全局变量对所有的程序文件都是可见的

运算符

//1.算术运算符
+ - * / % ++ --
//2.关系运算符
==  !=  > < <= >=
//3.逻辑运算符
&& || !
// 4.位运算符
&:都为1则为1
| :有一个是一则为1
^:两个位数同为1则为1
~:反码
<<:左移运算符
>>:右移运算符
//5.赋值运算符
 = += -= *= /= %= <<= >>= &=  ^= |=
//6.杂项运算符 ↦ sizeof & 三元
sizeof() 返回变量的大小
& 返回变量地址
*指向一个变量
? :  三元运算(条件表达式)

判断

//与JS基本相同
if else  
switch case  
三元

循环

//与JS基本相同
for
while
do ... while
//循环控制语句
break 结束循环
continue  结束本轮循环,开始下次迭代
goto   控制转移至标记语句

函数

strcat() 用来连接两个字符串
 memcpy() 用来复制内存到另一个位置
函数包含:名称 函数体 参数 返回类型 后两者不是必须得
函数声明中,参数的名称并不重要,只有参数的类型是必需的
int max(int, int);
当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序

作用域规则

全局 局部  形参  与JS相同   全局参数同名时有优先选择形参
//全局变量与局部变量在内存中的区别
全局变量保存在内存的全局存储区中,占用静态的存储单元;
局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。

数组

#C数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素

声明数组、数组赋值、访问数组

enum(枚举)

//基本数据类型
可以在定义枚举类型时改变枚举元素的值:enum season {spring, summer=3, autumn, winter};

C 指针

//什么是指针?
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址
&获取指针地址,*指针访问值
//NULL 指针
一个空的

函数指针与回调函数

#include 
 
int max(int x, int y)
{
    return x > y ? x : y;
}
 
int main(void)
{
    /* p 是函数指针 */
    int (* p)(int, int) = & max; // &可以省略
    int a, b, c, d;
 
    printf("请输入三个数字:");
    scanf("%d %d %d", & a, & b, & c);
 
    /* 与直接调用函数等价,d = max(max(a, b), c) */
    d = p(p(a, b), c); 
 
    printf("最大的数字是: %d\n", d);
 
    return 0;
}
回调函数基本与JS一样!

字符串

在 C 语言中,字符串实际上是使用 null 字符 '\0' 终止的一维字符数组
strcpy(s1,s2)  复制2至1
strcat(s1,s2)连接至尾端
strlen(s) 返回字符串长度
strcmp(s1,s2)两者相同返回0,s1s2 返回大于 0
strchr(s1, ch)返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置
strstr(s1, s2);返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

结构体

//为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型
位域
//有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,
//只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,
//称为"位域"或"位段"。

输入 & 输出

printf() 输入
scanf()输出
getchar() 屏幕读取下一个可用的字符并返回
 putchar() 字符输出到屏幕上,并返回相同的字符

C 文件读写

//打开文件
fopen( ) 
FILE *fopen( const char * 文件名, const char * 模式);
r //打开一个已有的文本文件,允许读取文件
a  //打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
 w//打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入
 +r +a +w
    //二进制文件
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
//关闭文件
int fclose( FILE *fp );
    //如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF
    //EOF 是一个定义在头文件 stdio.h 中的常量
//写入文件
int fputc( int c, FILE *fp );
 //函数 fputc() 把参数 c 的字符值写入到 fp 所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。

真J儿烦,放弃了!考试能过就行

你可能感兴趣的:(Primary:C(一、入门))