1b8c语言,C语言 - 王朝网络 - wangchao.net.cn
C语言
來源:互聯網 2016-08-27 06:33:09 評論
Ios操作界面操作快捷键command + c 复制
command+v 粘贴
command +a 全选
command +s 保存
command +z 撤销
command +x 剪切
command +space 输入法的切换
command +
option键(ios)--alt(windows)键
command在Windows键盘中就是windows键
linux命令cdcd:change directory 切换目录
liuzw@Ubuntu:~/sunjie$ cd c
liuzw@ubuntu:~/sunjie/c$
cd ~ 或者直接输入cd,是切换到当前用户的主目录
liuzw@ubuntu:~/sunjie/c$ cd
liuzw@ubuntu:~$
cd - 撤销上一次的cd操作
liuzw@ubuntu:~/sunjie$ cd c
liuzw@ubuntu:~/sunjie/c$ cd
liuzw@ubuntu:~$ cd -
/home/liuzw/sunjie/c
liuzw@ubuntu:~/sunjie/c$
cd / 回到根目录
cd .. 回到父目录
liuzw@ubuntu:~/sunjie/c$ cd ..
liuzw@ubuntu:~/sunjie$
pwd:PRint workdirectory查看当前工作路径
liuzw@ubuntu:~/sunjie$pwd/home/liuzw/sunjie
ls: list source 查看当前工作路径下的资源,包括文件及目录
ls –a(all) 查看所有资源,包括隐藏的
ls –l(list one file per line)
红色圈住的第一列表示资源类型,其中的d表示目录,-表示文件
红色圈住的第二列表示占用磁盘空间大小
mkdir : make directory 创建目录
mkdir –p 当父目录不存在时,就创建父目录,而不是报错
touch 一般用来创建空文件echo 回显数据 输出变量
$? 表示上一次命令的执行结果,0表示执行正确,其他的表示错误,如上图示
cp :copy拷贝文件
拷贝目录
cat 显示文件内容,只能看文件,不能看目录
cat –n 显示时加行号
C语言 计算机只认识1和0,编程语言的层级如下:
机器语言
汇编语言
高级语言(c语言)
1001,0010,0010,1111
mov 2 f
while if int
C语言的编译过程编译:实质就是翻译。常用的编译器如:gcc
可执行文件是运行时环境和一些.o结尾的文件的集合。将我自己目标文件和这些文件链接以后,形成可执行的文件。
目标文件是二进制机器码文件,可执行文件也是二进制的机器码文件,但是目标文件不能在机器上运行,必须与运行环境等链接才可运行。而可执行文件可以在机器上运行。
编写我的第一个c程序,hello.c他hello.h
hello.h文件内容如下:
#defineHELLO "helloworld"
Hello.c文件内容如下
#include #include"hello.h"intmain(void)
{
printf(HELLO);return0;
}
整个编译阶段分为四步:
第一步:预处理,hello.c转变为hello.i,一般为隐式执行
预处理命令:gcc -E hello.c -o hello.i,生成预处理文件简略如下:
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
# 943 "/usr/include/stdio.h" 3 4
# 2 "hello.c" 2
# 1 "hello.h" 1
# 3 "hello.c" 2
int main(void)
{
printf("helloworld");
return 0;
}
在预处理阶段,宏HELLO被替换为实际内容
第二步:汇编阶段,将C语言文件转换为汇编语言文件,也就是hello.i转变为hello.s
命令:gcc -S hello.i -o hello.s
hello.s文件内容如下
.file"hello.c".section .rodata
.LC0:.string"helloworld".text
.globl main
.type main, @functionmain:.LFB0:.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset16.cfi_offset6, -16movq %rsp, %rbp
.cfi_def_cfa_register6movl $.LC0, %edi
movl $0, %eaxcallprintf
movl $0, %eax
popq %rbp
.cfi_def_cfa7,8ret.cfi_endproc
.LFE0:.size main, .-main
.ident"GCC: (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4".section .note.GNU-stack,"",@progbits
第三步:将汇编语言编译成对应的机器语言(二进制格式),也就是hello.s转换为hello.o
命令:
gcc-c hello.s -o hello.o
使用命令
objdump -d hello.o
反汇编hello.o文件内容如下:
hello.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 :
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: bf 00 00 00 00 mov $0x0,%edi
9: b8 00 00 00 00 mov $0x0,%eax
e: e8 00 00 00 00 callq 13
13: b8 00 00 00 00 mov $0x0,%eax
18: 5d pop %rbp
19: c3 retq
第四步:将hello.o文件与运行环境链接,形成可执行文件
命令:
gcchello.o -o hello
查看hello文件内容,命令objdump –d hello反汇编查看
000000000040052d :
40052d: 55 push %rbp
40052e: 48 89 e5 mov %rsp,%rbp
400531: bf d4 05 40 00 mov $0x4005d4,%edi
400536: b8 00 00 00 00 mov $0x0,%eax
40053b: e8 d0 fe ff ff callq 400410
400540: b8 00 00 00 00 mov $0x0,%eax
400545: 5d pop %rbp
400546: c3 retq
400547: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
40054e: 00 00
以上为链接后的main函数,注意与未链接的区别:
0000000000000000 :
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: bf 00 00 00 00 mov $0x0,%edi
9: b8 00 00 00 00 mov $0x0,%eax
e: e8 00 00 00 00 callq 13
13: b8 00 00 00 00 mov $0x0,%eax
18: 5d pop %rbp
19: c3 retq
执行文件,命令./hello
如果把hello.c程序中的return 0 去掉的话,返回值就不一定为0
liuzw@ubuntu:~/sunjie/c$ ./a.out
helloworldliuzw@ubuntu:~/sunjie/c$ echo $?
10
总结:以上所有具体的编译过程可直接执行如下命令,直接形成可执行文件a.out
,也可加-o hello
Ios操作界面操作快捷键command + c 复制
command+v 粘贴
command +a 全选
command +s 保存
command +z 撤销
command +x 剪切
command +space 输入法的切换
command +
option键(ios)--alt(windows)键
command在Windows键盘中就是windows键
linux命令cdcd:change directory 切换目录
liuzw@Ubuntu:~/sunjie$ cd c
liuzw@ubuntu:~/sunjie/c$
cd ~ 或者直接输入cd,是切换到当前用户的主目录
liuzw@ubuntu:~/sunjie/c$ cd
liuzw@ubuntu:~$
cd - 撤销上一次的cd操作
liuzw@ubuntu:~/sunjie$ cd c
liuzw@ubuntu:~/sunjie/c$ cd
liuzw@ubuntu:~$ cd -
/home/liuzw/sunjie/c
liuzw@ubuntu:~/sunjie/c$
cd / 回到根目录
cd .. 回到父目录
liuzw@ubuntu:~/sunjie/c$ cd ..
liuzw@ubuntu:~/sunjie$
pwd:PRint workdirectory查看当前工作路径
liuzw@ubuntu:~/sunjie$pwd/home/liuzw/sunjie
ls: list source 查看当前工作路径下的资源,包括文件及目录
ls –a(all) 查看所有资源,包括隐藏的
ls –l(list one file per line)
红色圈住的第一列表示资源类型,其中的d表示目录,-表示文件
红色圈住的第二列表示占用磁盘空间大小
mkdir : make directory 创建目录
mkdir –p 当父目录不存在时,就创建父目录,而不是报错
touch 一般用来创建空文件echo 回显数据 输出变量
$? 表示上一次命令的执行结果,0表示执行正确,其他的表示错误,如上图示
cp :copy拷贝文件
拷贝目录
cat 显示文件内容,只能看文件,不能看目录
cat –n 显示时加行号
C语言 计算机只认识1和0,编程语言的层级如下:
机器语言
汇编语言
高级语言(c语言)
1001,0010,0010,1111
mov 2 f
while if int
C语言的编译过程编译:实质就是翻译。常用的编译器如:gcc
可执行文件是运行时环境和一些.o结尾的文件的集合。将我自己目标文件和这些文件链接以后,形成可执行的文件。
目标文件是二进制机器码文件,可执行文件也是二进制的机器码文件,但是目标文件不能在机器上运行,必须与运行环境等链接才可运行。而可执行文件可以在机器上运行。
编写我的第一个c程序,hello.c他hello.h
hello.h文件内容如下:
#defineHELLO "helloworld"
Hello.c文件内容如下
#include #include"hello.h"intmain(void)
{
printf(HELLO);return0;
}
整个编译阶段分为四步:
第一步:预处理,hello.c转变为hello.i,一般为隐式执行
预处理命令:gcc -E hello.c -o hello.i,生成预处理文件简略如下:
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
# 943 "/usr/include/stdio.h" 3 4
# 2 "hello.c" 2
# 1 "hello.h" 1
# 3 "hello.c" 2
int main(void)
{
printf("helloworld");
return 0;
}
在预处理阶段,宏HELLO被替换为实际内容
第二步:汇编阶段,将C语言文件转换为汇编语言文件,也就是hello.i转变为hello.s
命令:gcc -S hello.i -o hello.s
hello.s文件内容如下
.file"hello.c".section .rodata
.LC0:.string"helloworld".text
.globl main
.type main, @functionmain:.LFB0:.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset16.cfi_offset6, -16movq %rsp, %rbp
.cfi_def_cfa_register6movl $.LC0, %edi
movl $0, %eaxcallprintf
movl $0, %eax
popq %rbp
.cfi_def_cfa7,8ret.cfi_endproc
.LFE0:.size main, .-main
.ident"GCC: (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4".section .note.GNU-stack,"",@progbits
第三步:将汇编语言编译成对应的机器语言(二进制格式),也就是hello.s转换为hello.o
命令:
gcc-c hello.s -o hello.o
使用命令
objdump -d hello.o
反汇编hello.o文件内容如下:
hello.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 :
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: bf 00 00 00 00 mov $0x0,%edi
9: b8 00 00 00 00 mov $0x0,%eax
e: e8 00 00 00 00 callq 13
13: b8 00 00 00 00 mov $0x0,%eax
18: 5d pop %rbp
19: c3 retq
第四步:将hello.o文件与运行环境链接,形成可执行文件
命令:
gcchello.o -o hello
查看hello文件内容,命令objdump –d hello反汇编查看
000000000040052d :
40052d: 55 push %rbp
40052e: 48 89 e5 mov %rsp,%rbp
400531: bf d4 05 40 00 mov $0x4005d4,%edi
400536: b8 00 00 00 00 mov $0x0,%eax
40053b: e8 d0 fe ff ff callq 400410
400540: b8 00 00 00 00 mov $0x0,%eax
400545: 5d pop %rbp
400546: c3 retq
400547: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
40054e: 00 00
以上为链接后的main函数,注意与未链接的区别:
0000000000000000 :
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: bf 00 00 00 00 mov $0x0,%edi
9: b8 00 00 00 00 mov $0x0,%eax
e: e8 00 00 00 00 callq 13
13: b8 00 00 00 00 mov $0x0,%eax
18: 5d pop %rbp
19: c3 retq
执行文件,命令./hello
如果把hello.c程序中的return 0 去掉的话,返回值就不一定为0
liuzw@ubuntu:~/sunjie/c$ ./a.out
helloworldliuzw@ubuntu:~/sunjie/c$ echo $?
10
总结:以上所有具体的编译过程可直接执行如下命令,直接形成可执行文件a.out
,也可加-o hello
1b8c语言,C语言 - 王朝网络 - wangchao.net.cn相关推荐
- php yi ju hua,汉音对照 这句话应该如何翻译? zhe ju hua ying gai ru he fan yi ? - 王朝网络 - wangchao.net.cn...
这句话应该如何翻译? 来源:互联网 宽屏版 评论 2010-03-12 16:00:23 分类: 游戏 >> 网络游戏 问题描述: HellothereRobin--Thismessa ...
- R语言导入、读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv、readr包、data.table
R语言导入.读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv.readr包.data.table 目录 R语言导入.读取网络CSV数据(Read a CSV ...
- 王元元主编书籍计算机数学基础,计算机数学基础 - 王朝网络 - tc.wangchao.net.cn
计算机数学基础 來源:互聯網 2010-01-09 19:44:03 評論 课程的性质与任务 <计算机数学基础>(Basic Mathematics for Computer)是计算工 ...
- 程序设计语言python语言概述
程序设计语言 什么是程序设计语言 程序设计语言是人类与计算机交流和沟通的语言.人们通过使用程序语言,来书写计算机程序,以达到设计的程序满足需求的目的. 程序语言的发展历史 程序语言经历了从低级语言到高 ...
- 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua
今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下. 脚本语言:Shell , JavaScript.VBScript.Perl.PHP.Python.Ruby.Lua 工作控制语言和 ...
- 教师语言表达-语言互动
系列文章目录 第一章 师生语言互动中文文献阅读整理 文章目录 系列文章目录 前言 一.语言是什么? 二.教学语言分析 1.弗兰德斯分析法 2.等级指标法 3.协商互动分类 4.课堂教学质量分析 5.课 ...
- java属于什么语言_java语言属于什么语言?
JAVA语言是一种介于解释型语言和编译型语言之间的面向对象语言,属于高级混合型语言. Java代码需要先编译成class,然后交给JVM执行.而JVM在执行class代码时是解释执行的,所以Java不 ...
- 强国的语言与语言强国
<强国的语言与语言强国> 作者:教育部语言文字信息管理司司长 教育部语言文字应用研究所所长 中国社会科学院研究生 李宇明 理论上语言是一律平等的,现实中语言是有强有弱的.语言的强弱与语言所 ...
- OSChina 周二乱弹 —— 开发语言和语言开发的能一样么
Osc乱弹歌单(2019)请戳(这里) [今日歌曲] @花间小酌:#今日歌曲推荐# 分享The Score的单曲<Revolution> <Revolution>- The S ...
最新文章
- sqlserver常用函数点滴记录
- LVS/keepalived配置
- 【渝粤教育】广东开放大学 动画原画设计 形成性考核 (22)
- 和显卡驱动要配套吗_天天学渲染,你的显卡驱动用对了吗?
- linux查看杀死进程
- 【华为云技术分享】干货分享丨jvm系列:dump文件深度分析
- 树莓派连接usb手机_树莓派03 - 树莓派的VNC连接
- 合成资产挖矿项目 ARCx 启动流动性挖矿
- leetcode python3 简单题66. Plus One
- Git@OSC 已经支持 Gitlab Control 移动客户端
- window驱动备份与安装
- Python2.爬虫--单词查询程序
- 李春葆《数据结构教程》课后习题和实验代码
- 将RGB颜色转换成16bit颜色
- 代理服务是个什么东西?
- ELK企业应用-ekl快速搭建-kibana
- 诺基亚WP7手机或10月发布 搭载新版系统
- html生成闪电特效
- c加加高级语言循环结构,高级C语言循环结构程序设计.ppt
- 【Qt象棋游戏】03_象棋棋子摆放
热门文章
- Oracle goldengate通用配置
- shapefile中环状多边形处理问题
- Powerful array(CF-86D)
- Command NetWork(POJ-3164)
- 分数线划定(信息学奥赛一本通-T1180)
- 22 FI配置-财务会计-定义收益留存科目(Retained Earning Account)
- python的print语句有哪些_Python语句print(type([1,2,3,4]))的输出结果是。
- sqllite java 代码,非常简单的SQLite的Java程序
- jedis操作set_使用Redis来进行缓存操作
- python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...