- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
项目搭建
-
管理员方式运行 Visual Studio
-
-
创建新项目
-
-
选择空项目
-
-
设置项目名称
-
-
指定工程路径
-
-
添加源文件
-
选中源文件
-
-
右键添加新建项
-
-
指定格式文件
-
-
-
书写框架代码
-
#include <stdio.h> #include <stdlib.h> int main() { printf("Hello 0xCC \n"); system("pause"); return 0; }
-
-
调试运行程序
-
IDE 调试
-
-
运行文件
-
-
注释方式
-
注释作用 -> 方便他人或自己阅读代码
-
注释语句 -> 不参与编译
-
注释风格
-
单行注释 //单行注释
-
多行注释 /*多行注释*/
-
示例代码
-
#include <stdio.h> #include <stdlib.h> /* 多 行 注 释 */ //控制台程序的入口函数 int main() { printf("Hello 0xCC /*输出吗?*/\n"/*输出吗?*/); system("pause"); return 0; }
-
框架解析
-
#include
-
include -> 包含/包括库文件 -> 预处理指令(preprocessor directive)
-
< >库文件 -> <stdio.h>
-
std -> standard -> 标准
-
i -> input -> 输入
-
o -> output -> 输出
-
h -> header -> 头文件
-
-
" "头文件
-
C 语言中使用对应库函数时需要包含与之相对应的头文件
-
printf - stdio.h
-
system - stblib.h
-
-
常见头文件
-
控制台程序 - stdio.h stdlib.h
-
WIN32 程序 - windows.h
-
驱动程序 - ntifs.h
-
-
常见样式
-
#include <xxx.h> //库文件 系统指定目录下查找对应内容 #include "xxx.h" //头文件 首先在工程项目根目录下查找对应内容,如果未找到则在系统指定路径当中查找
-
-
-
main
-
固定格式
-
返回值 - int
-
函数名 - main
-
int main() { return 0; } /* 返回值(VOID) 函数名(main)(参数列表) { //TODO } */
-
-
参数列表 - ()
-
00032042 mov edx,dword ptr [ebp-4] //参数3 00032045 push edx 00032046 mov eax,dword ptr [ebp-8] //参数2 00032049 push eax 0003204A mov ecx,dword ptr [ebp-0Ch] //参数1 0003204D push ecx 0003204E call _main (0312D0h) //函数调用 00032053 add esp,0Ch //堆栈平衡
-
-
代码块 - {}
-
程序的入口函数 - 有且只能有一个
-
控制台程序 - main
-
GDI 程序 - Winmain
-
驱动服务 - DriverEntry
-
-
-
printf
-
printf 是 C 语言中的库函数 - 作用是向控制台窗口输出内容 - 对应头文件 stdio.h
-
函数调用过程 - CALL - 函数名(参数列表);
-
printf 使用规则
-
输出内容必须放在 ""(英文格式下的双引号)
-
输出内容 - "XXX" - 字母/数字/符号/文字
-
转义字符 - \n - 换行符
-
格式化输出 - %d
-
-
-
system
-
system -> cmd
-
开始菜单搜索 cmd
-
WIN + R -> cmd
-
-
代码书写 -> system("指令字符串");
-
查询说明 -> 指令格式 + /?
-
cls -> 清理控制台内容
-
calc -> 运行计算器
-
pause -> 请按任意键继续
-
color -> 设置控制台颜色
-
notepad-> 运行记事本
-
-
return
-
main 函数中执行到 return 位置时意味着 main 函数执行完毕
-
-
语法规则
-
预处理指令 - #include <xxx.h>
-
函数定义 - Result Funname(Param...){}
-
函数调用 - FunName(Param);
-
可执行语句 - return 0;
-
字符模式 - 英文模式
-
命名规则
-
关键字
-
C/C++ 中预先保留的字符(标识符)
-
定义变量-常量-函数等命名时避免使用关键字
-
asm do if return typedef auto double inline short typeid bool dynamic_cast int signed typename break else long sizeof union case enum mutable static unsigned catch explicit namespace static_cast using char export new struct virtual class extern operator switch void const false private template volatile const_cast float protected this wchar_t continue for public throw while default friend register true delete goto reinterpret_cast try
-
输出格式
-
转义字符
-
请同学们使用 printf 函数输出 "0xCC"
-
#include <stdio.h> #include <stdlib.h> int main() { //转义字符 //" -> \" printf("\"0xCC\" \n"); return 0; }
-
退格 -> \b
-
换行 -> \n
-
回车 -> \r
-
水平 -> \t
-
斜杠 -> \\
-
单引 -> \'
-
双引 -> \"
-
问号 -> \?
-
-
数据输出
-
函数格式 -> printf(”格式化字符串“, 待打印项1, 待打印项2, ...);
-
格式化字符串是双引号内的内容
-
%c-> 单个字符
-
%s-> 字符串
-
%d-> 有符号十进制整数
-
%u-> 无符号十进制整数
-
%f-> 浮点数
-
%p-> 指针
-
-
待打印项可以是 变量-常量-表达式 等
-
格式化字符串中的每一项必须与待打印项相匹配
-
printf 函数使用 % 来格式化字符串,如果要输出 % 则使用两个 %% 来代替
-
#include <stdio.h> #include <stdlib.h> int main() { //"A" printf("%c \n", 'A'); //"Hello 0xCC" printf("%s \n", "Hello 0xCC"); //cat printf("Name -> [%s] Age -> [%d] ", "0xCC", 18); //变量 int Score = 99; printf("Socre -> [%d] \n", Score); printf("[%d] * [%d] = [%d] \n", 3, 9, 3 * 9); printf("%%"); return 0; }
-
-
数据输入
-
函数格式 -> scanf("格式化字符串", 数据地址);
-
printf 输出传入数据 - scanf 接受传入数据
-
scanf 获取 基本变量类型 的值时需要增加 &
-
scanf 获取 数组变量类型 的值是不需增加 &
-
//#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { //定义变量 int Num1 = 0; //输出信息 printf("请输入取款金额 -> "); //接受输入 scanf_s("%d", &Num1); //输出信息 printf("取款金额 -> [%d] [%s] \n", Num1, "不好意思 您的余额为0取款失败"); return 0; }
-
代码调试
-
断点方式
-
- 选中当前下断代码单击 F9
-
-
触发断点
- 下断成功之后当程序运行至下断位置则自动触发
-
调试监视
- 当断点触发时,visual studio 顶部菜单栏调试 -> 窗口
- 自动窗口
- 局部变量
- 监视窗口
- 内存窗口
- 寄存器窗口
- 反汇编窗口