2021.10.10
1.写代码
创建项目
创建空项目
创建源文件
xxxx.c 源文件
xxxx.h 头文件
编写代码
写出主函数(main函数) 从主函数的第一行开始执行 -入口
int 整形 {}函数体 return 0 返回类型
打印函数 print是一个库函数 引用需要打招呼
包含一个头文件 #include
一个工程中 可以有多个.c文件 只能有一个main函数
编译运行
2.数据类型
char 字符类型 1 sozeof 关键字 操作符
short 短整型 2
int 整形 4
long 4
long long 8
fioat 单精度 4
doubt 双精度 8
常量和变量
创建一个变量 建议格式: 类型 名字 = 0
%d %f %lf
局部变量 和 全局变量
{}内定义 {}外定义
当两者名字冲突时 {}内引用以局部优先
3.作用域和生命周期
局部:变量所在的范围 全局:整个工程 跨文件需要声明: extern int 名字
创建到销毁之间的时间段 程序的生命周期
4:常量和变量
字面常量
const修饰的常变量 const int num = 1; 其本质仍是变量 定义数组时需要用常量
#define 定义的标识符常量 常量 不能更改
枚举常量 可以一一列举的常量
enum (关键字) Sex
{male=3,(附初始值)
female,
Secret}
enum Sex s = male; //定义s的性别 从sex里取
5.字符串和转义字符
字符串 用双引号括起来的一串字符 结束标志是 在结尾的位置隐藏了一个
(调试 监视窗口) strlen() 求字符串长度
问题: char arr[] = { 'a','b'};
char arr1[] = { "ab" };
双引号和单引号? char? 数组?
2021.10.11
转义字符 ? 防止?? 被认为三字母词
' " \ t 水平制表符 tab
ASCII表 ddd (后面表示一个八进制数字) xdd (dd是十六进制数字)
6. 注释 // 后者不支持嵌套
7.选择语句 if else
8.循环语句
9.函数 一个模块 , 自己定义 返回结果
返回类型 函数名 (参数类型 参数名 )
int add(int x , int y)
10. 数组
整形数组 int arr[ ]= [ 1,2,3,4,5 ]
字符数组 cher ch [ 5 ] = [ ' a ' , ' b ' ] 不完全初始化 其余的默认为 0
用下标访问
11.操作符
算术操作符 + - * / % / 用整数除法只能整除 当有一个是小数的时候才会得到小数
移位操作符 << >> 移动的二进制位
位操作符 & 按位与 | 按位或 ^按位异或
赋值操作符 = += -= %=
单目操作符 当+ 在 a+b 中 +为双目操作符
! 逻辑反操作 - + & sizeof ~ 对一个数的二进制按位取反 1 0 互换
int a = 0 ; ~a = -1
整数在内存中储存补码
整数的二进制表示 原码 反码 补码 正数三者相同
00000000000000000000000000000000 0 的补码
1111111111111111111111111111111111111 按位取反 最高位是符号位 认为是负数
1111111111111111111111111111111111110 反码 补码-1
10000000000000000000000000000001 取反 得原码 得整数 -1
关系操作符 > < >= <= ++ !=
逻辑操作符 &&逻辑与 ||逻辑或
条件操作符(三目操作符) ?: exp1?exp2:exp3
1成立 2 计算结果 反之 3计算
逗号表达式 逗号隔开的一串表达式 从左向右依次计算 结果是最后一个表达式的结果
下标引用 [ ] 函数调用操作符 ( ){函数名后面的()}
12.关键字
c语言提供的 不能自己创建 不能用作变量名
auto 每个局部变量是auto修饰的 { (auto)int a = 10 }自动创建自动销毁
break continue do case char const default 默认
double else enum 枚举
extern 声明外部符号 float for goto语句 if int long
register寄存器关键字
return short signed有符号的-unsigned无符号 static struct 结构体
switch 语句 union 联合体 void 空 volatile暂时不讲 while
define include 是预处理指令 不是关键字
typedef 类型重定义 typedef unsigned int u_int
可以用别名 复杂类型简单化来代替
static 修饰局部 出局部之后不销毁 改变了生命周期保存值
本质改变存储类型
内存中 栈区 局部变量 函数参数
堆区 动态内存的分配
静态区 全局变量 static修饰的静态变量
修饰函数 修饰全局 使全局变量 函数 只能在自己所在源文件内部使用
本质是将外部链接属性 改成了内部链接属性
2021.10.12
13. #define 定义常量 和 宏
define 定义符号 宏 #define ADD(x,y) x+y 完成替换
14.指针
内存中的储存单元的管理 1.怎么编号 2.一个内存单元多大空间
32位 64位 -多少根地址线 - 物理线 - 通电 - 01 将电信号转化为数字信息 二进制序列
32位 00000000000000000000000000000000
........
1111111111111111111111111111111111111 一共2的32次方个地址编号(内存单元)
一个内存单元是一个字节 byte 一个字符的长度
int main ()
{ int a = 10 ; //a在内存中分配空间 四个字节
printf( “%pn” , &a);// %p是专门用来打印地址
int * pa = &a ; // pa 是用来存放地址 在c语言中叫指针变量
// * 说明pa是指针变量 int说明 pa的执行对象是int 类型
char ch = ' w ' ; char * pc = &ch ;
*pa = 20 ; // * 为解引用操作符
指针的大小都是 4个字节 (在32位的平台)
15.结构体 用来描述复杂对象 可以让c语言创建出新的类型出来
//创建学生类型
struct Stu
{ char name[20]; int age; double score; }
int main ()
{ struct Stu s = {"张三", 20 , 85.5} ;//结构体的创建和初始化
printf(“ %s %d %lf n”, s.name , s. age , s.score)} 结构体变量.成员变量
结构体指针 struct Stu * ps = & s ps -> name (*ps).name
至此,对c语言的大概有了整体的一些认识,可以看懂一些代码,也完成了几道算法题,希望能慢慢进步。
这段虽然是这两天才整理笔记,但是内容已经反反复复的看了好几次,只能说,从一个什么都不知道的小白开始学习的时候,确实是对于编程很迷茫的,不知道这是什么那是什么,为什么这么写那么写是为什么,但是要做的大概就是,接受他的概念,在他的概念下思考逻辑,会有助于理解。
我想,学习一类新东西大概都是这样的,到稍微有些上手后,就会好很多。



