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…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...