Linux下的C(长期贴)
来源:互联网 发布:flashfxp mac 中文 编辑:程序博客网 时间:2024/05/16 18:52
Linux基本命令及文件组织结构:
1、组织结构 Linux:犹如一颗倒置的树,所有文件存在根目录下(/) Windows:所有文件存在于盘符中("E"……)2、基本命令 1、打开命令终端:(Ctrl Alt T) farsight@ubuntu:~$(用户名@主机名 :与$之间当前所处路径) 2、pwd:查看当前所在路径 eg:略 3、ls: ls [目录路径] //列出目录路径下的内容,不指定则当前目录 ls -l [目录路径]//将指定目录路径下的内容以列表形式列出 ls -a [目录路径]//将指定目录路径下的所有内容列出 clear或(ctrl L):清屏 4、cd:目录切换(接绝对路径和相对路径) 相对路径:相对于当前目录路径的路径 绝对路径:以根开始的路径 cd ..:回到上一级目录 cd ~或cd:回到farsight目录 cd:-回到上一次的工作目录 5、目录的创建及删除 创建:mkdir + 名字 删除:rm -r + 目录名 6、文件的创建及删除 创建:touch + 文件名 gedit + 文件名 & vi + 文件名 三种模式 命令行模式: Nyy:连续N行的复制 P/p:粘贴 Ndd:连续N行的剪切 U/u:撤销 插入模式:i 底行模式: :wq 保存退出 :w 保存不退出) :q 退出未修改文件 :q! 强制退出 :set [no]number 设置/取消行号 :行号 光标定位到指定行 删除命令:rm rm 文件名 7、文件的拷贝 用法: cp + 源文件 + 目标目录/文件 8、文件的移动 用法: mv + 源文件 + 目标目录 mv + 源文件 + 目标文件//更改文件名3、编译器gcc + 编译文件名 [-o 指定文件名]
C语言变量
基本知识
1、变量说明形式: 存储类型 数据类型 变量名: 存储类型:auto(默认) static(静态存储)extern(声明一个外部的全局变量)register(寄存器存储) 数据类型:(32bit) 基本类型: 整形:int(4byte) short(2byte) long(4byte) 浮点型:float(4byte) double(8byte) 字符型:char(1byte) 构造数据类型: enum(枚举) struct union 数组 指针 void(1.用来说明函数无返回值;2.说明指针是不确定数据类型的指针) 变量名:符合命名规则(由一个或多个字母数字下划线组成;不能以数字开头;不与关键字同名) 关键字:(32个) 数据类型:int……enum、struct、union、void//10 存储类型:auto、static、extern、register、signed、unsigned 控制语句:if else、switch case default break continue for do while goto 其他:typedef return sizeof(变量或数据类型) volatile const 2、控制语句 顺序; 分支:简单形式、阶梯形式、嵌套形式 循环:
数组
1、数组 说明形式 数据类型 数组名[元素个数] 说明:数组名是数组首元素的地址,是地址常量,不能做左值 数组在内存中占字节数 = sizeof();2、初始化 数据类型 数组名[元素个数] = {初值}3、各个元素的地址 a+i//第i个元素的地址练习: 数组逆序、封装函数 冒泡排序2、一维字符数组 char 数组名[元素个数] eg:char ch[] = {}; char ch[] = "";//会自动在末尾添加"\0"3、字符串操作函数(很多,包括分割字符串等实用函数) strlen()、 strcpy() strcmp() strcat()
指针
一、指针指针:内存单元的地址指针变量:保存变量地址的变量说明形式:数据类型 *指针变量名初始化数据类型 *指针变量名 = 地址值&和*&:取变量地址*:取地址处的内容运算算术运算 p+n:向地址大的方向偏移n个数据类型 p-q:两指针之间相差的数据类型个数关系运算 == != > <赋值运算 = +=二、指针与数组第i个元素地址 a+i p+i &a[i]第i个元素:a[i] p[i] *(p+i) *(a+i)常量区和栈区三、多级指针四、二维数组1、说明形式数据类型 数组名[行数][列数]2、初始化按行初始化 int a[2][3] = {{1,2,3},{1,2,3}} int a[2][3] = {1,2,3,4,5,6}五、数组指针(行指针)说明形式 数据类型 (*数组指针名)[常量表达式];本质:是指针,指针指向的是一个数组 int a[2][3] int (*p)[3] = a *(*(p+i)+j)//一层一层取地址再取值;六、指针数组本质:是数组,数组中各元素是指针说明形式:数据类型 *指针数组名[元素个数];int *p[5];char *ch[5] = {"red","green","blue","yellow","white"};ch[0] = "red";(不能通过指针对内容改变)
函数
不赘述需要注意几点: 局部变量不能作为返回值;修改外部变量(非全局),传递的参数为指针才可在函数内部对变量进行真实的修改(学好指针很重要) 指针函数:返回值是指针的函数,形如int *fun(参数列表){return 一个int型指针;} 函数指针:指针指向函数,形如int (*fun)(参数列表);使用方法见下
int max(int a,int b){return a};int (*fun)(int,int);//声明指针不实现void main(){ fun = max;//tips函数名可直接作地址<=>&函数名 fun(1,2);}
结构体(struct)和共用体(union)
文件:一组相关数据的有序集合
分类(bcd-lsp)-:普通文件(ASCII文本文件, 二进制文件)d:目录文件l:符号链接文件(相似与快捷方式)c:字符设备文件()b:块设备文件p:管道文件(进程间通信的一种方式)s:套接字文件操作open() #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); 函数参数: pathname:指定打开文件的路径名的首地址 flags:打开文件的方式 O_RDONLY ……(3) 函数功能: 打开pathname指定文件 返回值 成功:文件描述符 失败:-1,保存在errno中,通过函数perror()查看 0:标准输入 1:标准输出 2:标准错误输出 int open(const char *pathname, int flags, mode_t mode) 打开pathname指定文件,此文件可以是不存在的文件 mode:文件的权限 ———— 一般是八进制数表示 0777(自己,文件所属组,其他文件)read() #include <unistd> ssize_t read(int fd, void *buf, size_t count); 函数参数: fd:open()的返回值 buf:保存从fd中读取的内容的首地址 count:指定从fd中读取内容的字节数 功能: 指定从fd中读取count个字节,并且将读取的内容保存在buf指定的数组中 返回值: 成功;实际读取的字节数 0:读到文件末尾 错误 :-1,保存到perror()查看;write() #include <unistd> ssize_t write(int fd, void *buf, size_t count); 函数参数: fd:open()的返回值 buf:要写入fd中内容的首地址 count:指定从fd中写入的字节数 功能: 指定从buf指向的数组中的count个字节写入fd中 返回值: 成功;实际写入fd中的的字节数 0:没有写入内容到fd 错误 :-1,保存到perror()查看;
进程:正在运行的程序(command ps)
注意:每个进程都有自己独立的地址空间线程:共享同一个进程的地址空间的多个任务一个进程中的多个线程共享以下资源 可执行指令 静态数据 进程中的文件描述符 信号处理函数 当前工作目录 用户ID 用户组ID线程的私有资源 线程ID PC和相关寄存器 堆栈 局部变量 返回地址 错误号 信号掩码和优先级 执行状态和属性……(3)#include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);参数: thread:保存线程ID的变量地址 attr:线程属性 通常NULL start_routine:函数指针 只需传线程函数名即可 arg:线程函数的参数返回值: 0:成功 错误号:……注:编译时链接 -lpthread。#include <pthread.h>int pthread_join(pthread_t thread, void **retval);int pthread_exit(void *retval);
阅读全文
1 0
- Linux下的C(长期贴)
- C、C++、Java、JS(长期贴)
- Linux - 常用命令(长期更新)
- linux常用命令(长期更新)
- 我常用的linux命令(长期更新)
- linux vim的使用方法笔记(长期更新中)
- 【linux】比较不错的常用命令(长期维护)
- linux下各种文件格式的压缩以及解压缩命令(长期更新)
- [长期更新] Linux简单实用的功能
- 长期更新和维护Linux的操作
- 嵌入式C笔试总结(长期更新)
- C 常用函数罗列(长期更新)
- Linux 命令之系统管理(长期维护)
- linux 常用命令 (长期更新中...)
- linux下的C
- linux常用命令的英文单词缩写(收集加原创)长期更新
- Linux下的C初探(FC4)
- 银行业的长期估值(中)
- Docker实战系列——第三话–docker 监控(三)– how could we monitoring(4)?
- AtCoder Regular Contest 079-C
- 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
- HDU 1180 诡异的楼梯
- QUAKE 3源代码审查:渲染器
- Linux下的C(长期贴)
- Sky 数
- mui中页面之间传值
- NYOJ 1087 摆方格
- Rescue HDU
- 51nod 1080两个数的平方和(数学题)
- D
- 数梅派连接arduino出现Permission denied: '/dev/ttyUSB0'错误解决
- STM32的ADC笔记