1丶指针
指针:一种数据类型,是用来存放地址的。
定义指针变量
指针所指向空间存放的数据类型 * 指针变量名 = 初始化的值;
指针的使用
* 指针变量名 = 值;//通过地址修改指针所指空间的内容
指针变量名 = 新的地址;
例: int num = 34;
int * p = #
printf(“num=%d,*p=%d\r\n”,num,*p);
printf("&num=0x%x,p=%p",&num,p);
例: char name[] = "hehe";
char *p = &name[0];
printf("%s",name);
printf("%s\r\n",p);
char *q = "hehe";//字符串
printf("%s\r\n",q);
2丶文件IO
文件:一组相关数据的有序集合。
文件名:这个数据集合的名称。
文件分类:
按文件的内容分类:
源文件,目标文件,数据文件
按文件的操作方式分类:
标准文件,一般文件
按文件存放数据的作用不同分类:
普通文件-,目录文件d,链接文件1,字符设备文件c,块设备文件b,管道文件p,套接字文件s,
文件的操作:
打开文件
操作文件(读丶写丶ioct1)
关闭文件
相关函数
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags, mode_t mode);
函数功能:创建并打开文件
函数参数:
pathname:文件名
flags:打开方式,用宏定义表示。O_RDONLY,O_WEONLY,O_RDWE,O_CREAT
mode:创建权限,一般用三位8进制表示 例:0666
函数返回值:成功时,返回文件描述符;失败时,返回-1.
例:创建文件1.txt并且写入“helloworld”;
int fd = 0;
fd = open(“1.txt”,O_CREAT | O_RDWR,0666);
例:打开文件time.mp3,读取文件内容
fd = open(“time.mp3”,O_RDWR,0666);
int close(int fd);
函数功能:关闭文件
函数参数:fd:是open的返回值。
函数返回值:成功时,返回0;失败时,返回-1.
int read(int fd,char * buf,int size);
函数功能:读取文件内容
函数参数:
fd:是open的返回值
buf:读到的内容保存在buf中
size:准备读取的字节数
函数返回值:成功时,返回读到的长度;失败时,返回-1.
int write(int fd, const char * buf,int size);
函数功能:把内容写入文件
函数参数:
fd:是open的返回值
buf:准备写的内容
size:准备写的字节数
函数返回值:成功时,返回写入的长度;失败时,返回-1.
并发任务
进程
概念:程序运行的一次过程
进程是操作系统分配资源的最小单位
特点:
并发性,独立性,制约性
线程
概念:轻量级的进程
子线程只有独立的栈段,和主线程共享其他内存段
线程是操作系统调度的最小单位
创建线程
#include <pthread.h>
int pthread_create(pthread_t * th,pthrear_attr_t * attr,void ( handle)(void *),void * arg);
参数:
th:存放创建的子线程的线程号
attr:线程的属性,一般给NULL。适应操作系统默认的参数。
handle:线程的执行函数
arg:给线程执行函数传的参数
返回值:成功时,返回0;失败时,返回-1;
int pthread_join(pthread_t thread,void **value_ptr)
功能:主线程等待子线程结束
参数:thread:子线程的id
value_ptr:子线程退出时返回的结果,一般为NULL。
返回值:成功时,返回0;失败时,返回-1;
互斥锁
多线程操作临界资源的时候,需要保证线程执行的完整性。
步骤:
pthread_mutex_lock
操作临界资源//全局变量
pthread_mutex_unlock
补充:
内存分段:代码段,数据段,堆段,栈段
编译程序时,添加库(库就是编译好的二进制程序)
gcc main.c -lpthread -o main
注意: -l表示链接库