C语言基础教程

C语言概述:

语言是人与人交流,C语言是人和机器交流

优点:

代码量小

执行速度快

功能强大

编程自由

缺点:

写代码实现周期长

可移植性差

过于自由,经验不足易出错

对平台库依赖较多

标识符命名规则:

不能使用系统关键字

允许使用字母数字下划线

不允许数字开头

标识符区分大小

见名知义

C语言编译步骤:

1.预处理(hello.i ):宏定义展开、条件编译等,同是将代码中的注释删除,这里并不会检查语法
2.编译(hello.s):检查语法,将预处理后文件编译生成汇编文件。
3.汇编(hello.o):将汇编文件生产目标文件(二进制文件)
4.链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去。

常见代码问题:

1.编辑时异常
2.编译时异常
3.执行时出错

汇编语言:

mov=移动
add=添加
push=压栈
call=调用

eax 32位寄存器

简单加法计算:

                //___asm
                //{
                //            mov a, 10
                //            mov b, 20
                //            mov eax, a
                //            mov eax, b
                //            mov c, eax
                //}

断点和单步调试:

断点:在选中行单击或者按F9
调试程序:在“调试”中选择“开始调试”或者按F5
逐语句执行:F11
逐过程执行:F10
跳出过程:Shift+F1
停止调试:Shift+F5

CPU内部结构域

寄存器 64位和32位系统区别:

  • 寄存器是CPU内部最基本的存储单元。
  • CPU对外是通过总线(地址、控制、数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那么这个CPU就叫8位CPU。
  • 如果总线是32位,寄存器也是32位的,那么这个CPU就是32位CPU。
  • 有一种CPU内部的寄存器是32位,但总线是16位,准32位CPU
  • 所有的64位CPU兼容32位的指令,32位要兼容16位的指令,所以在64位的CPU上是可以识别32位的指令。
  • 在64位的CPU架构上运行64位的软件操作系统,那么这个系统是64位。
  • 在64位的CPU构架上,运行了32位的软件操作系统,那么·这个系统就是32。

寄存器、缓存、内存三者关系

按与CPU远近来分,离得最近的是寄存器,然后缓存(CPU缓存),最后内存。

C语言头文件

<stdio.h> std是一个标准库,i =input o =output 标准输入输出库 .h头文件

system的使用

功能:在已经运行的程序中执行另外一个外部程序
参数:外部可执行程序名称
返回:

成功:0

失败:任意数字

代码示例:

#include<stdio.h>
#include<stdlib.h>//系统命令头文件
int main()
{
   
       //cmd命令 calc=计算器 记事本=notepad 画图板=mspaint
       //system可以打开一个外部应用程序
       //system("calc");
       int value;
       value = system("calc");
       //%d是一个占位符,表示输出一个整型数据
       printf("%d\n", value);
       return 0;
}

总结:cmd命令 calc=计算器 记事本=notepad 画图板=mspaint
<stdio.h> std是一个标准库,i =input o =output 标准输入输出库 .h头文件

更多文章,敬请关注微信公众号:YQ编程

C/C++基础 文章被收录于专栏

本专栏收录C/C++编程语言相关知识

全部评论

相关推荐

想干测开的tomca...:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务