liunx学习第四天

今天同样是学习liunx中gcc的编译以及c语言一些重点需要明白的基础问题。

一、gcc指令的使用

1、语言的发展

由二进制语言(机器语言)——汇编语言(用符号表示一组操作)——自然语言(以语句为单位进行一组操作)——…

2、C语言属于说明语言

C语言是一种中级语言,它具备汇编的特性(直接操作硬件速度快)同时也具备高级语言的特性(可移植性)

3、计算机识别的语言

首先要了解计算机唯一可以识别的是机器语言(也就是二进制语言),也就是说不管说明语言想要被计算器所执行就必须要转换成机器语言(编译器:把源代码编译成计算机可以执行的代码)。
那么对于不同的设备,同等的代码可以经过不同编译器编译成设备可执行的文件。对于C语言而言gcc是Linux下常用于编译的C语言的编译器。

4、C程序编译的步骤

步骤 内容 指令
预处理 处理#开头的内容,进行替换,去掉注释,生成预处理文件 (后缀 .i ) gcc -E
编译 对代码进行处理编译,生成汇编文件(后缀 .s ) gcc - S
汇编 把汇编文件编译成目标文件(后缀 .o ) gcc -c
链接 把多个目标文件夹按一个要求规则组成一共可执行程序,生成可执行文件(无后缀) gcc(默认生成a.out)
对生成的文件重命名 gcc 编译的文件 -o 改的文件名

(注:在编译过程中只要使用gcc 就默认执行了预处理,编译,汇编,链接的过程)

5、liunx下程序的执行

linxu下想运行程序,只要在终端敲可执行文件名(带上文件的相对路径或绝对路径)

6、liunx开关网卡的指令

(1)ifdown eth0 关网卡
(2)ifdown eth0 开网卡

二、c语言一些重点了解

1、头文件的包含方式

(1)< > :用< >包含头文件,头文件的路径一定在/usr/include/中,在使用时会去此路径中去找,找不到文件就无法编译。(一般系统文件用< >)
(2)" “:用” “包含头文件,头文件的路径在/usr/include/中或者在当前目录下,在使用时会先在当前目录下查找再去、usr/include/路径中去找,2个路径都找不到文件就无法编译。(一般自己编辑的文件用” “)
(注:”…/stdio.h"是先去此目录的前一个目录找stdio.h文件,再去usr/include/寻找)(stdo.h是C语言的标准输入输出头文件)

2、main的注意事项

(1)main函数有返回值,返回值是int(整型),用于表示程序结束状态。返回0 表示正常结束,返回其他值表示异常结束。
(2)C语言有且仅有一个main函数
(3)序是以main函数开始执行的

3、编写规范

(1)“ {”下面的内容与其要有4个空格
(2)单词与单词间要有空格
(3)不 同逻辑间要有空行

三、内存

1、在这里插入图片描述

2、内存是怎么分配的

内存给每一个字节分配了一个内存地址,每个编号的位数是固定的且以二进制编号。
32位系统的编号是32个也就是4B,范围000…(32个0)——11111…(32个1)总共2^32B=4GB
64位系统编号是64个也就是8B,范围000…(64个0)——11111…(64个1)总共2^64B

3、数据存催

内存是以二进制存催的,以单个字符为例:
(1)无符号数:只有正数,不带符号位
范围:0——255
(2)有符号数:带正负号,首位为符号位(0表示正数,1表示负数)
范围:-128——127
小注意:有符号数的正数在数据中存催的就是数据本身,负数是它的补码
(补码:保留符号位,对剩下的数据取反+1)
对于有符号数在一个字节内:0在内存中的表示-128;内存中的1111 1111 是指-1;127+1=-128

猜你喜欢

转载自blog.csdn.net/weixin_43360263/article/details/84098460