Linux下C语言学习

基于Red Hat Linux 9

1. Linux系统概述

1.1 Linux的内核版本和发行版本

内核版本号之后还会附加一个数字,比如2.4.20-8,最后的数字用来表示该版本内核是第几次被修订的。

2是主版本号,4是次版本号,20是次次版本号。重大改动主版本号加1,加入新特性次版本号加1,轻微改动次次版本号改动。

次版本号为奇数表示该版本是测试版,偶数是稳定版本。

1.2 Linux的基本使用

1.2.1 Linux终端

Linux把显示器和键盘合称为终端。

在终端上,通过输入Shell命令来控制和使用计算机。

1.2.2 Linux Shell

Shell是命令解释器

1.3 Linux下的开发环境和过程

开发环境:字符界面图形化

在字符界面的开发环境中,可以使用Vi,Vim,Emacs文本编辑器来编写源程序,GCC来编译,GDB来调试。如果开发的是大型程序,用Makefile文件来编译程序,用Git和CVS进行版本管理。

2. C,Vi和Emacs编辑器

2.1 C语言的基本数据类型

在C语言中,数据类型分为基本数据类型,构造数据类型(数组,枚举类型,结构体和联合体),指针类型,空类型。

2.1.1 整型

整型常量为常数,C语言常见的整型常量有:16进制(0x10),10进制(22),8进制(01000)。

int是整型变量的基本类型,整型变量还有短整型(short int或short)和长整型(long int或long),在32位机器上,短整型为2字节(16位),基本整型和长整型为4字节(32位)。

一个短整型short变量的值的范围 -32768~32767,如果使用unsigned short 就变成了65535

C语言没有规定各个数据类型所占内存的字节数,具体情况具体分析。所占内存的字节数可以用sizeof来确定。

#include<stdio.h>
int main(){

	short int i;
	int j;
	long int k;
	printf("short-length:%d\n",sizeof(i));
	printf("int-length:%d\n",sizeof(j));
	printf("long-length:%d\n",sizeof(k));
	return 0;
}

运行结果:

wanglei@wanglei-PC:~/cpro$ gcc -o test1 1.c
wanglei@wanglei-PC:~/cpro$ ./test1 
short-length:2
int-length:4
long-length:8
2.1.2 浮点型

浮点常量即实数,有两种表示形式。

(1)十进制小数形式。它由正负号,数字,小数点组成。如3.21,0.24,.57,0.0

(2)指数形式。一般形式为xEy和xey,y必须为整数。如2.15e1

浮点型变量有单精度(flout型)和双精度(double型)两种,一般浮点型变量它们在内存中占4个字节和8个字节。

单精度有效数字是7位,双精度有效数字是16位。

#include<stdio.h>
int main(){

	float a = 88888.88888; /*整数部分5位,小数部分5位*/
	double b = 88888888888.8888888; /*整数部分11位,小数部分7位*/

	printf("a--->%f\n",a);
	printf("b--->%f\n",b);
	return 0;
}

运行结果

wanglei@wanglei-PC:~/cpro$ gcc -o test2 2.c 
wanglei@wanglei-PC:~/cpro$ ./test2 
a--->88888.890625 #有效位是7位,最后一位四舍五入
b--->88888888888.888885 #有效位是16位

字符串常量

2.1.3 字符型

字符常量是用单引号括起来的一个字符

转义字符以反斜杠“\”开头

字符串常量是由一对双引号括起来的字符序列

系统自动在字符串尾部加上一个字符‘\0’,用来标识这个字符串的结束。

符号常量,比如 #define PI 3.14159

2.2 算术运算符

i++:先使用i,再加1

i–:先使用i,再减1

++i:先把i的值加1,再使用

–i:先把i的值减q,再使用

2.3 运算符和表达式

2.3.1 逗号运算符和逗号表达式

之后再去补充

2.4 标准输入输出函数

6. 文件操作

6.1 概述

Shell命令是OS提供给普通用户使用的接口。

系统调用是OS给程序员使用的接口。

如果忘记命令的参数和怎么使用,可以输入man命令来查看函数原形。

6.2 Linux文件结构

文件包括两方面的内容:

  • 文件本身包含的数据
  • 文件的属性(元数据),包括文件访问权限,所有者,文件大小,创建日期

在LInux根目录下

  • /bin 用于存放普通用户可执行命令
  • /boot 内核以及启动系统时需要的文件
  • /dev 设备文件的存储目录
  • /etc 用于存放系统的配置文件
  • /home 普通用户的主目录
  • /lib 存放库文件
  • /proc 该目录是一个虚拟文件系统,只有系统运行时才存在
  • /root 超级用户root的主目录
  • /sbin 存放管理系统的命令
  • /tmp 临时文件目录
  • /usr 用于存放系统应用程序及相关文件
  • /var 用于存放系统中经常变化的文件
6.2.1 Linux的文件系统模型

对物理磁盘的访问都是通过设备驱动程序来进行的,而对设备驱动的访问有两种途径:

  1. 通过设备驱动本身提供的接口(不稳定,不安全)
  2. 通过虚拟文件系统VFS提供给上层应用程序的接口

VFS的使用体现了Linux文件系统的最大特点–支持多种不同的文件系统。Linux不仅支持EXT2,EXT3还支持Windows的vfat。

6.2.2 文件的分类

Linux包含以下文件类型

  • 普通文件:最常见的文件类型,对普通文件内容的解释由处理该文件的应用程序完成。
  • 目录文件:目录文件就是目录,目录也有访问权限。目录文件的内容就是该目录下的文件和子目录的信息,只有内核可以写目录文件。
  • 字符特殊文件:用于表示系统中字符类型的设备。比如键盘,鼠标等,这些硬件对OS来说只是一个文件。
  • 块特殊文件:用于表示系统中块类型的设备,如硬盘,光驱等。
  • FIFO:这类文件用于进程间的通信,也称为命名管道。
  • 套接字:主要用于网络通信,也可以用于一台主机上的进程之间的通信。
  • 符号连接:指向另一个文件,是另一个文件的引用。

可以通过ls -l的第一个字母来判断文件类型

6.2.3 文件的访问权限控制
wanglei@wanglei-PC:~/qemu$ ll
总用量 5580356
drwxrwxr-x  4 wanglei wanglei       4096 109 14:21 ./
drwx------ 34 wanglei wanglei       4096 1011 08:50 ../
drwxrwxr-x 41 wanglei wanglei       4096 109 14:20 build/
drwxr-xr-x 55 wanglei wanglei       4096 812  2020 qemu-5.1.0/
-rw-rw-r--  1 wanglei wanglei   62911540 812  2020 qemu-5.1.0.tar.xz
-rw-r--r--  1 wanglei wanglei 5651300352 109 15:11 ubantu.qcow2

从左到右依次是:文件属性,文件数,所有者,拥有该文件的用户所属的组,文件大小,文件创建时间,文件名

文件属性第1位表示文件类型,剩下9位表示文件的访问权限。

r=4 w=2 x=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值