C Language Handout
明天(9月3日)上课时间
上午:09:30 - 12:00
下午:14:30 - 17:00
周末 - 务必 - 找一下报名/班主任老师 - 确认账号是否为正式账号
今日内容:
一.第一个C语言程序
mkdir /home/tarena/stdc/day03 -p
cd /home/tarena/stdc/day03
vim hello.c
#include <stdio.h>
/*
这是我的第一个C语言程序
我很开心
*/
int main(void){
printf(“hello,world\n”);
return 0;
}
保存退出
gcc hello.c //a.out文件
./a.out //hello,world
注意:不要出现中文标点符号
分析:
[1]C语言程序绝大部分的内容都应该记录在.c为扩展名的文件中, 这种文件叫做源文件
.java
.py
.cpp
…
C语言中还包含以.h为扩展名的文件, 叫做头文件
[2]可以在程序添加文字性说明信息, 必须将其放到注释区域
多行注释 - 以 /* 开头, 以 */ 结尾
可以将注释内容添加如其中
不能嵌套多行注释
单行注释 - 以//为开头, 一直到行尾
[3]#include <stdio.h> - standard input output . header
#include - 文件包含 - 预处理指令(?) - 将后面的文件包含到当前文件中
#include <stdio.h> 将stdio.h拷贝到当前所在位置基本上只要是C语言程序,都会包含该文件 <stdio.h> 需要该代码后会去Linux系统路径/usr/include寻找stdio.h, 找到后就将其拷贝到当前位置上 系统头文件 stdio.h <>#include "stdio.h" 先在当前文件所在目录去寻找stdio.h, 如果找不到再去/usr/include去找stdio.h 自己编辑头文件 cal.h ""都用""的方式 - 语法上可以, 实际上
[4]main函数
function - 功能 - 函数
名字为main的一个功能 - main函数
程序执行 :
从main函数中自上而下执行
main函数结束 - 程序结束 //就这么写main函数
int main(void){...;
}void - 不需要参数
int - 整数类型的返回值 非常重要的函数, C语言程序里必须要包含一个main函数, 只有一个main函数 //完整版main函数
int main(int argc, char** argc, char** envp){...}int main(int argc, char** argc){...}void main(void){...}
main(void){...}
int main(){...}
main(){...}
...执行语句 - C语言每条语句都必须用分号(;)结束一行里最多包含一条语句同级别语句最左边一列应该上下对齐
[5]关键字
C语言提供了几十个单词表示特定的含义 - 关键字
int - 整数类型 - integer
void -
return - 返回
[6]printf函数
标准C库提供的函数
将双引号中内容输出到显示器上
hello,world\n
\n - 下一行行首
[7]return 0;
return - 返回
1.结束当前函数
只要在一个函数中看到了return关键字 - 结束当前函数
此时 - 结束当前函数 - 结束main函数 - 程序结束
2.指定返回的数据 - 返回值
return 0;
返回0 - 返回给操作系统 - main函数如果返回0认为main函数正常结束
返回-1 - main函数异常结束 -
返回的数据要和函数名前面的数据类型对应 - 0 , -1 == 整数 - int - integer
保存退出
gcc hello.c -> a.out -> ./a.out
二.gcc编译器
hello.c - 给谁看
计算机 - 只能看懂二进制内容 - 010010101010110101
人 - 看明白
结果 -
人可以看明白
计算机 - 蒙圈
将当前缩写的代码经过翻译得到计算机可以看懂的代码, 翻译的过程 - 编译
编译中需要用到的工具, 编译器
gcc就是编译器
注意 :
编译器不唯一
vc
terbo c
keil5
…
过程 :
gcc hello.c
得到a.out
a - application - 应用
out - output - 输出
a.out - 编译程序所得到的输出的应用程序 - 可执行程序 - 二进制程序 - 计算机可以看明白
hello.c -> gcc -> a.out
弊端 :
a.out - 用来干嘛的
gcc xx.c -> a.out 默认得到a.out - 目的性及其不明确 gcc hello.c -> a.out
gcc world.c -> a.out 后面的a.out将前面的a.out覆盖
程序编译的过程 :
gcc编译程序的步骤 : 四步骤 / 三步骤
-
预处理
将源文件中包含的头文件拷贝到当前的.c文件中
#include <stdio.h> gcc编译器第一步就会将stdio.h头文件内容拷贝过来
gcc -E hello.c -o hello.i
只进行预处理的步骤, 得到.i文件, 打开看看 -
编译
将预处理得到的.i文件进行编译得到汇编文件
汇编文件 : .s / .S - 汇编代码
gcc -S hello.i -o hello.s
.s - 计算机 - 不明白 -
汇编
将编译后得到的.s文件经过汇编得到计算机可以识别的机器文件 - 二进制
该文件叫做目标文件
目标文件 : .o - object
gcc -c hello.s -o hello.o
.o - 二进制内容 - 计算机 - 明白.o文件无法运行
4.链接
就是将大神的各种代码, 例如: printf函数的实现代码 和 字节的代码整合起来 - 形成了二进制可执行程序
该过程称为链接
|xxxxxxxxxxxxxxxxx|.o + |yyyyyyyyyyyyyyyy|.o = 二进制可执行程序
字节写的代码 各种大神代码
gcc hello.o -o hello
此时可执行程序名字为hello
gcc选项:
-E : 预处理, 只会预处理
-o : 指定输出的文件名
-S : 只进行编译步骤
-c : 只进行汇编步骤
运行程序 :
./hello
练习 :
完整的编译, 运行
gcc xx.c -o xx
gcc hello.c -o hello - 一步到位 - 标准
练习 :
编辑程序today.c
向屏幕输出: Today is Friday, I am happy
编译 - 分步法编译 - 四步骤
运行程序
gcc -E today.c -o today.i
gcc -S today.i -o today.s
gcc -c today.s -o today.o
gcc today.o -o today
./today
编译 - 语法错误
1.遇到很多问题
先解决第一个问题 再次编译
2.百度翻译
input
outout
command
previous
…
先翻译 - 看看是哪里出的问题
printf函数
将程序中的数据显示到终端窗口中 - 包含stdio.h
可以在双引号里使用占位符, 将数据转移到双引号后面
%d - 整数类型占位符
可以在一条语句中使用多个占位符, 需要在双引号后面使用多个数字.
数字个数和占位符个数, 保持一致
占位符表示的数据可以是未知的 - 变量
输出两台手机的差价
三.变量
四.数据类型
相关文章:
C Language Handout
明天(9月3日)上课时间 上午:09:30 - 12:00 下午:14:30 - 17:00 周末 - 务必 - 找一下报名/班主任老师 - 确认账号是否为正式账号 今日内容: 一.第一个C语言程序 mkdir /home/tarena/stdc/day03 -p cd /home/tarena/stdc/day03 vim hello.c #include <stdio.h> /* 这是…...
数据结构——栈(C语言)
需求:无 栈的概念: 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端为栈底。栈中的数据元素遵守后进先出(LIFO)原则。压栈&…...
Linux 内核内存管理 page_address 函数
文章目录 一、page_address1.1 page_address1.2 page_to_pfn1.3 PFN_PHYS1.4 __va(x)1.5 总结1.6 page_to_virt 二、使用demo 一、page_address 1.1 page_address 内核用 struct page 结构体来表示系统中的每个物理页面,该结构体用来跟踪和管理这些物理页面的使用…...
macOS使用ffmpeg与QT进行音视频推拉流
1.先启动流服务器 ./mediamtx 2.开始推流: ffmpeg -re -stream_loop -1 -i /Users/hackerx/Desktop/test.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream 3. 安装ffmpeg 4.4 brew install ffmpeg4 4.添加ffmpeg头文件目录与库目录 5.链接ffmpeg相关库…...
ARTS打卡:双指针的尝试
替换空格 <?php class Solution {/*** param String $s* return String*/function replaceSpace($s) {$arrstr_split($s); //转化成数组foreach($arr as &$item){if($item ){//执行替换操作$item%20;}}return implode(,$arr); //数组转化成字符串返回} } 反转链表…...
JavaWeb-DAO设计模式
目录 DAO设计模式 1.认识DAO 2.DAO各部分的详解 3.DAO设计模式流程 DAO设计模式 1.认识DAO DAO(Data Acess Object 数据库访问对象)的主要功能是操作数据库,所以DAO在标准开发架构中数据数据层,以下是标准开发的架构 客户层:目前使用B/…...
重温git和GitHub
1.初始化本地库:让git获取到这个目录的管理权 git init 查看文件夹的文件命令:ll 查看文件夹的隐藏的文件命令:ll -a 查看状态的命令:git status cat文件名:查看文件内容 工作区:当git status时,名字为红色则在工作区&…...
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
wpf iconfont 外部图标引入,无法正常显示问题。 1. 检查资源路径和引入格式是否正确2. 检查资源是否包含在程序集中 1. 检查资源路径和引入格式是否正确 正确的格式,注意字体文件 “xxxx.ttf” 应写为 “#xxxx” <TextBlock Text"…...
Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习
论文题目:Hierarchically Self-Supervised Transformer for Human Skeleton Representation Learning 论文下载地址:https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136860181.pdf 代码地址:https://github.com/yuxiaochen1103…...
FPGA 之 xilinx DDS IP相位控制字及频率控制字浅析
浅析相位环在Xilinx DDS中的理解 本文仅为个人理解之用; 相关仿真结果如下:...
[鹏城杯 2022]简单包含
直接用php:// 有wtf 加脏数据绕过...
Required request parameter ‘XXX‘ for method parameter type XXX is not present问题
今日工作中遇到很奇葩的问题,用翻译软件翻译结果为 方法参数类型XXX所需的请求参数XXX不存在 也就是说前端没有给后端传值 后端的接收方式为 public Result demo(RequestParam("id") String id){}...
centOS 快速安装和配置 NVIDIA docker Container Toolkit
要在 CentOS 上正确安装和配置 NVIDIA Container Toolkit,您可以按照以下步骤进行操作,如果1和2都已经完成,可以直接进行第3步NVIDIA Container Toolkit安装配置。 1. 安装 NVIDIA GPU 驱动程序: 您可以从 NVIDIA 官方网站下载适…...
编程练习(2)
一.选择题 第一题: 考察转义字符和strlen函数求解字符串长度 进一步在VS中可以智能看出哪些字符是转义字符: 因此本体答案选择B 第二题: 本体较为简单,宏定义了三个数N,M,NUM,N值为2,M值为3,因此NUM值为8,…...
利用Figlet工具创建酷炫Linux Centos8服务器-登录欢迎界面-SHELL自动化编译安装代码
因为我们需要生成需要的特定字符,所以需要在当前服务器中安装Figlet,默认没有安装包的,其实如果我们也只要在一台环境中安装,然后需要什么字符只要复制到需要的服务器中,并不需要所有都安装。同样的,我们也可以利用此生成的字符用到脚本运行的开始起头部分,用ECHO分行标…...
Git Cherry-pick使用
概述 无论项目大小,当你和一群程序员一起工作时,处理多个 Git 分支之间的变更都会变得很困难。有时,与其把整个 Git 分支合并到另一个分支,不如选择并移动几个特定的提交。这个过程被称为 "挑拣", 即 Cherry-pick。 本…...
红帽8.5 ansible 安装和部署 |(简单版)
什么是ansible Ansible是一款基于OpenSSH开源的自动化运维工具,可以用它来配置系统、部署软件和编排更高级的 IT 任务,并且使用具有极高的安全性,ansible是当前市面上主流的自动化运维工具之一 为什么使用ansible 比较直观的说,…...
Visual Studio 2019 c++ 自定义注释 ----doxygen
可加入C 也可自定义。 <?xml version"1.0" encoding"utf-8"?> <CodeSnippets xmlns"http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"><CodeSnippet Format"1.0.0"><Header><Title>注释…...
面试题. 零矩阵
编写一种算法,若M N矩阵中某个元素为0,则将其所在的行与列清零。 示例 1: 输入: [[1,1,1],[1,0,1],[1,1,1] ] 输出: [[1,0,1],[0,0,0],[1,0,1] ] 示例 2: 输入: [[0,1,2,0],[3,4,5,2],[1,3…...
易语言下载器
静态网站整站下载器 https://bbs.125.la/forum.php?modviewthread&tid14791313&highlight%E4%B8%8B%E8%BD%BD%E5%99%A8 易语言 之音乐下载器 https://blog.51cto.com/u_15309652/3153642 (File Download Assistant)下载链接:https…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
