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
/*
这是我的第一个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 - standard input output . header
#include - 文件包含 - 预处理指令(?) - 将后面的文件包含到当前文件中

#include  
    将stdio.h拷贝到当前所在位置
    基本上只要是C语言程序,都会包含该文件 
     需要该代码后会去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编译程序的步骤 : 四步骤 / 三步骤

  1. 预处理
    将源文件中包含的头文件拷贝到当前的.c文件中
    #include gcc编译器第一步就会将stdio.h头文件内容拷贝过来
    gcc -E hello.c -o hello.i
    只进行预处理的步骤, 得到.i文件, 打开看看

  2. 编译
    将预处理得到的.i文件进行编译得到汇编文件
    汇编文件 : .s / .S - 汇编代码
    gcc -S hello.i -o hello.s
    .s - 计算机 - 不明白

  3. 汇编
    将编译后得到的.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++,C语言,c语言,python,linux)