c语言触摸(c语言头插入法建立单链表)

本文讲的是C语言的触摸和用C语言头插入法建立单链表对应的知识点。希望对你有帮助,也别忘了收藏这个站点。

这篇文章的列表: 1.c语言,指针,stm32 2、C语言函数调用 3.c语言touchcontrolservice * service =(touchcontrolservice *)PV;你什么意思?我不明白 4.C语言指令有哪些? c语言,指针,stm32 Tp_dev是一个结构,init和scan都是它的成员。这些成员的类型是函数指针,也就是说,它们指向一个函数。使用这个指针相当于一个函数调用。

所以在定义tp_dev的时候,init成员被你初始化为TP_Init,也就是说tp_dev.init指向TP_Init()函数,所以你写TP _ dev . Init();它相当于调用TP_Init。

_m_tp_dev tp_dev=

{

TP_Init,

...

}

类似的,如果你tp_dev.scan(),你调用TP_Scan。

C语言中的函数调用 打开Ubuntu,在目标路径打开一个终端。选择一个路径,用touch命令创建function.h、function.c、test.c三个文件,分别作为函数头文件、函数源文件和测试文件。首先使用vim命令和vsplit依次打开三个文件。在头文件中添加重复的宏,并添加四则运算的函数声明。在function.c中包含function.h,具体实现四个方法。注意判断除数是否为0。然后写一个测试程序来测试。整体程序代码如下:保存所有程序并退出,用gcc编译,运行结果如下。这是函数的声明、定义和调用。语言的作用域规则:一组规则,决定一部分代码是否“可见”或者是否可以访问另一部分代码和数据。C语言中的每个函数都是一个独立的代码块。一个函数的代码块隐藏在函数内部,不能被任何其他函数中的任何语句访问(调用它的语句除外)(例如,不能用g o t o语句跳转到另一个函数内部)。构成函数体的代码对程序的其他部分是隐藏的,它既不能影响程序的其他部分,也不能被其他部分影响。换句话说,因为两个函数的作用域不同,所以一个函数中定义的代码数据不能与另一个函数中定义的代码和数据进行交互。

c语言touchcontrolservice * service =(touchcontrolservice *)PV;你什么意思?我不明白 TouchControlService * service =(TouchControlService *)PV;

将pv转换为TouchControlService *类型。

C语言指令有哪些? 第一章:引言?

内核版本号格式:X.Y.zz-www/x为主版本号,Y为次版本号,zz为次版本号,www为发布号/次版本号。变化表明内核发生了重大变化,偶数为稳定版本,奇数为仍在开发中的版本。

第二章:基础?

文件类型:-:txt,二进制/d:目录/l:链接)/b文件/b:块设备文件/c:字符设备文件/p:管道。

目录结构:bin:可执行/boot: boot//dev:设备文件//etc:系统配置文件//lib:库文件//mnt:设备挂载点//var:系统日志/

命令:rmdir:删除空目录//find[path][expression]/touch/touch命令还可以修改指定文件的最后访问时间/tar-czvf usr.tar.gz路径/tar–zxvf usr.tar.gz/tar–cjvfusr.tar.bz2path/tar–jxvfusr.tar.bz2.

Gcc:预处理:-g/I在头文件搜索路径中添加目录,l在库文件搜索路径中。

Gdb:设置断点:b/查看断点信息:info。

makefile:make–other _ makefile/:第一个依赖文件的名称/@:目标文件的全名/:所有不重复的依赖文件/:所有依赖文件(可能重复)。

第三章:文件IO

read:read(fd,temp,size);/将fd中的size值读取到temp//返回0表示文件为空。

write:write(fd,buf,buf _ size);/将长度为buf_size的buf内容写入fd。

lseek:lseek(fd,offset,SEEK _ SET);/增加从文件开头向后的偏移量。

取消链接:从文件系统中删除名称。

open 1:int open(const char * pathname,int flags,mode _ t mode);//flags是读写模式/mode是权限设置/o _ excl:测试文件是否存在/o _ trunc:如果存在同名文件,删除并新建一个。

Open2:注意O_NONBLOCK。

mmap.1:void *mmap(void *start,size_t length,int prot,int flags,int fd,off _ t offsize);

mmap.2:mmap(start_addr,flength,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);

Fcntl: lock/int fcntl (int FD,int cmd,struct flock * lock);/给谁;怎么办;设置你做了什么。

Select: FD _ max1,返回读状态,返回写状态,返回异常,选择等待时间/null总是等待/0从不等待/每当需要一种情况时使用,否则,(FD _ set *)为null。

FD_*那些函数...

一般错误返回-1。

第四章:文件和内容

硬链接和符号链接?

Chdir更改目录

0:输入/1:输出/2:错误

第5章:内存管理

可执行文件存储时间:代码区、数据区、未初始化区。

栈:由编译器,扩展到低位地址,连续高效/堆:由程序员

/etc/syslog.conf,系统日志日志文件/最高优先级为-20。

第6章:过程和信号

程序代码、数据、变量、文件描述符和环境//init的pid为1。

Execl家族:intexecl (constchar * path,constchar * arg,...);/path是可执行文件的路径,通常是。/最后一个参数以NULL结尾。

waitpid:waitpid(pid_t pid,int * status,int options);//选项:一般用WNOHANG。如果没有已经结束的子进程,立即返回,不要等待。

kill:int kill(pid_t pid,int SIG);/向pid发送信号sig。

void (*signal(int signum,void(* handler)(int)))(int);/当第一个参数满足时,执行handler//第一个参数常用:SIG_IGN:忽略信号//SIG_DFL:恢复默认信号。

第7章:线程

Sem _ init (SEM _ t * SEM,int pshared,unsigned int value)/pshared为0/value,为初始值。

第八章:管道

1:写/0:读

第9章:信号量、共享内存和消息队列。

关键资源:操作系统中只允许一个进程访问的资源/关键区域:访问关键资源的代码。

信号量:建立连接(semget),然后初始化,PV操作,最后销毁。

共享内存不提供同步机制。

第10章:插座

UDP:没有连接协议,主机和客户端/实时之间没有区别。

TCP:字节流/数据可靠性/网络可靠性

数据报:sock _ stream/sock _ dgram

其他的

管道一章中的Both_pipe就是父进程与子进程之间的全双工管道通信。

与信号和互斥相关的服务器-客户端程序

Thread章节中类的multi_thread文件夹下的Thread8.c。

int main(void)

{

int data _ processed

int file _ pipes _ 1[2];

int file _ pipes _ 2[2];

char buffer[BUFSIZ 1];

const char some _ data[]= " 123 ";

const char ch2p[] = "这是从子到父的字符串!";

const char p2ch[] = "这是从父到子的字符串!";

pid _ t fork _ result

memset(buffer,' \0 ',sizeof(buffer));

if(pipe(file_pipes_1) == 0){

if(管道(文件管道2) == 0){

fork_result = fork()。

switch(fork_result){

案例1:

perror(“分叉错误”);

退出(EXIT _ FAILURE);

案例0://child

关闭(file _ pipes _ 1[1]);

close(file _ pipes _ 2[0]);

printf("在孩子身上!\ n ");

read(file_pipes_1[0],buffer,BUFSIZ);

printf("在子系中,read_result为\"%s\"\n ",buffer);

write(file_pipes_2[1],ch2p,sizeof(ch2p));

printf("在子中,write_result是\"%s\"\n ",ch2p);

退出(EXIT _ SUCCESS);

默认值://parent

close(file _ pipes _ 1[0]);

关闭(file _ pipes _ 2[1]);

printf("在父!\ n ");

write(file_pipes_1[1],p2ch,sizeof(p2ch));

printf("在父代中,write_result是\"%s\"\n ",p2ch);

read(file_pipes_2[0],buffer,BUFSIZ);

printf("在父代中,read_result是\"%s\"\n ",buffer);

退出(EXIT _ SUCCESS);

}

}

}

}

#伊夫·DBG

#定义DBG

#endif

# DBG

#伊夫·DBG

#define PRINTF(fmt,args...)printf("文件-%s行-%d: " \

fmt,__FILE__,__LINE__,##args)

#否则

#define PRINTF(fmt,args...)do { } while(0);

#endif

int main(void)

{

PRINTF("%s\n ","你好!");

fprintf(stdout,"你好hust!\ n ");

返回0;

}

#定义N 5

#定义最多5个

int nput = 0;

char buf[MAX][50];

char * buffer = " abcdefghijklmnopqrstuvwxyz 0123456789 ";

char buf _ r[100];

sem_t互斥,满,可用;

void * productor(void * arg);

void * consumer(void * arg);

int I = 0;

int main(int argc,char **argv)

{

int CNT =-1;

int ret

int nput = 0;

pthread _ t id _ produce[10];

pthread _ t id _ consume

ret = sem_init(互斥,0,1);

ret = sem_init(avail,0,N);

ret = sem_init(full,0,0);

for(CNT = 0;CNT 6;cnt ){

//pthread _ create(id _ produce[CNT],NULL,(void *)productor,CNT);

pthread_create(id_produce[cnt],NULL,(void *)productor,(void *)CNT);

}

pthread_create(id_consume,NULL,(void *)consumer,NULL);

for(CNT = 0;CNT 6;cnt ){

pthread_join(id_produce[cnt],NULL);

}

pthread_join(id_consume,NULL);

sem_destroy(互斥);

SEM _ destroy(avail);

sem_destroy(完整);

退出(EXIT _ SUCCESS);

}

void *productor(void *arg)

{

while(1){

SEM _ wait(avail);

sem_wait(互斥);

if(nput = MAX * 3){

SEM _ post(avail);

//SEM _ post(full);

sem_post(互斥);

返回NULL

}

sscanf(buffer nput," %s ",buf[nput % MAX]);

//printf("write[%d] \"%s\ "到缓冲区[%d]\n ",(*(int*)arg),buf[nput % MAX],nput % MAX);

printf("write[%d] \"%s\ "到缓冲区[%d]\n ",(int)arg,buf[nput % MAX],nput % MAX);

nput

printf("nput = %d\n ",nput);

sem_post(互斥);

sem_post(满);

}

返回NULL

}

void *消费者(void *参数)

{

int no lock = 0;

int ret,nread,I;

for(I = 0;I MAX * 3;我)

{

sem_wait(满);

sem_wait(互斥);

memset(buf_r,0,sizeof(buf _ r));

strncpy(buf_r,buf[i % MAX]),sizeof(buf[I % MAX]);

printf("从缓冲区[%d]中读取\ " % s \ ")\ n \ n ",buf_r,I % MAX);

sem_post(互斥);

SEM _ post(avail);

//sleep(1);

}

返回NULL

}

C语言触摸和C语言头插入建立单链表的介绍到此结束。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。

相关文章

发表新评论