随笔分类 -  C语言学习

谭浩强版本
摘要:由于条件变量必须和互斥锁协同使用,所以在介绍条件前会先介绍一下互斥锁(本文目前只介绍C语言,C++的条件变量可能后期会介绍) 1、互斥锁 从本质上来说,互斥锁是一把锁,保护共享资源免受并发影响的问题,同一时间只能有一个线程可以访问被保护的资源,从而防止竞态而产生不好的结果 1、C语言互斥锁的基本使用 阅读全文
posted @ 2023-08-16 14:28 风中凌乱的猪头 阅读(190) 评论(0) 推荐(0) 编辑
摘要:使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。 记录网址:https://jeremybai.github.io/blog/2014/09/10/size-t 阅读全文
posted @ 2023-07-31 09:29 风中凌乱的猪头 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1、服务器端 1 #include<stdio.h> 2 #include<sys/socket.h>//套接字 3 #include<netinet/in.h> 4 #include<string.h> 5 #include<stdlib.h> 6 #include<arpa/inet.h>//字 阅读全文
posted @ 2023-07-11 09:11 风中凌乱的猪头 阅读(27) 评论(0) 推荐(0) 编辑
摘要:1、用lseek计算文件长度 ret = lseek(fd,0,SEEK_END);返回值是文件指针距离文件开头的偏移量,也就是文件的长度 2、用seek构建空洞文件 1、空洞文件就是文件中有一段是空的 2、普通文件中间是不能有空的,因为我们write时文件指针是依次从前向后去移动的,不可能绕过前面 阅读全文
posted @ 2023-06-27 21:41 风中凌乱的猪头 阅读(912) 评论(0) 推荐(0) 编辑
摘要:1、系统调用是最底层的调用,是面向硬件的,而库函数的调用是面向开发的,相当于应用程序的api接口 2、各个操作系统的系统调用是不同,因此系统调用没有跨操作系统的可移植性,而库函数的可移植性良好 3、库函数属于过程调用,调用开销小;系统调用需要在用户空间和内核态之间切换,调用开销大。 4、有时候库函数 阅读全文
posted @ 2023-06-25 17:21 风中凌乱的猪头 阅读(496) 评论(0) 推荐(0) 编辑
摘要:(只写了文件调用的,C库自己看吧) 1、系统调用 定义:指操作系统提供给用户程序的调用的一组“特殊接口”,用户程序可以通过这组特殊接口来获得操作系统内核提供的服务 2、Linux文件描述符 当某个程序打开程序时,操作系统会返回相应的文件描述符,(相当于文件的别名,打开之后就只用这个fd来表示这个文件 阅读全文
posted @ 2023-06-24 09:52 风中凌乱的猪头 阅读(124) 评论(0) 推荐(0) 编辑
摘要:1、输出目标不一样 printf:输出到标准输出 sprintf 输出到指定字符串中,参数比printf多了一个char* (目标字符串地址) fprintf输出到指定文件设备中,参数比printf多了一个文件指针 file * 2、原型 1、int fprintf(file * stream,co 阅读全文
posted @ 2023-06-21 22:12 风中凌乱的猪头 编辑
摘要:1、函数:exit() 所在头文件:stdlib.h 功能:关闭所有文件,终止正在执行的进程 exit(0)表示正常退出 exit(x)都表示异常退出,这个x是返回给操作系统的,以供其他程序使用 return和exit:无论在哪里使用main都会终止程序,return只是将控制权交给递归的前一级。r 阅读全文
posted @ 2023-06-13 09:27 风中凌乱的猪头 阅读(354) 评论(0) 推荐(0) 编辑
摘要:1、编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。 #include<stdio.h> #include 阅读全文
posted @ 2023-06-06 20:02 风中凌乱的猪头 阅读(37) 评论(0) 推荐(0) 编辑
摘要:1、从字符数组中读出相应的整数、实数。(写的有点可怕,先找第一个数字就会简单很多) //从一个字符数组中读出相应的整数、实数 #include<stdio.h> #include<math.h> #include<string.h> int main() { void atoif(char a[]) 阅读全文
posted @ 2023-05-30 22:04 风中凌乱的猪头 阅读(40) 评论(0) 推荐(1) 编辑
摘要:1、函数参数顺序点 1、语句结束时值改变 2、&& || , ? :等运算符、 3、函数参数传递时的求值顺序 int k = 1; func(k,k++); 那K+1,K是等于什么呢,函数参数的运算应该是从 右到左,所以K++的K应该是1,先输出后运算,而K应该是2 int i = 0; print 阅读全文
posted @ 2023-05-29 22:53 风中凌乱的猪头 阅读(14) 评论(0) 推荐(0) 编辑
摘要:(*p)带括号的都是指针 指针数组:指针的数组,这个数组中所有的元素都是指针类型 数组指针:数组的指针,这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址,定义的时候 int a[3] ; int (*p)[3] = &a//正确&a是指整个数组的首地址 int (*p)[3] = 阅读全文
posted @ 2023-05-25 10:03 风中凌乱的猪头 阅读(17) 评论(0) 推荐(0) 编辑
摘要:1、5*5数组中找出一行中最大的数,同时也是一列中最大的数。 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 int main(){ srand((unsigned)time(NULL)); int i,j; int 阅读全文
posted @ 2023-05-24 22:24 风中凌乱的猪头 阅读(98) 评论(0) 推荐(1) 编辑
摘要:1、!!!用malloc的时候一定要free int *a; a = (int *)malloc(sizeof(int)*n) 向内存申请了10个int型的空间,malloc返回值是首地址,但是是无类型(void)型首地址,需要强制转换成当前所需类型。 malloc申请内存之后,如果不用free,就 阅读全文
posted @ 2023-05-23 09:57 风中凌乱的猪头 编辑
摘要:从主函数输入十个字符串,并且在函数里比大小。 1、二维数组 #include<stdio.h> #include<string.h> #define N 3 #define M 10 //字符型二维数组作为参数 int main(){ void sortstr(char a[][M],int n); 阅读全文
posted @ 2023-05-21 23:52 风中凌乱的猪头 阅读(530) 评论(0) 推荐(0) 编辑
摘要:1、getchar 头文件:stdio.h 原型:int getchar(void)返回值? 功能:读取控制台输入的字符一个,并保存在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中) 用于,%c fgets前需要注意 2、getch 头文件conio.h 原型:int getch(void 阅读全文
posted @ 2023-05-21 10:30 风中凌乱的猪头 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1、定义:创建一个对象,为这个对象分配一块内存并给他去上一个名字,一个变量只能被定义一次。 2、声明:告诉编译器,这个名字已经被匹配到一块内存上了,变量或对象是在别的地方定义的,声明可以出现很多次,声明是为了扩大变量的适用范围。 变量:对程序中数据的存储空间的抽象 3、初始化:创建变量的同时给初始值 阅读全文
posted @ 2023-05-20 12:54 风中凌乱的猪头 阅读(216) 评论(0) 推荐(0) 编辑
摘要:1、输出3个整数,按由小到大的顺序输出,写的复杂了,加上分析会变得简单,像下面输出3个字符(从小到大) #include<stdio.h> int main(){ void compare(int *a,int *b,int *c); int a,b,c; printf("please input 阅读全文
posted @ 2023-05-20 08:58 风中凌乱的猪头 阅读(199) 评论(0) 推荐(0) 编辑
摘要:数据类型,所占字节,表示范围 原码 十进制数据的二进制表现形式就是原码,原码最左边的一个数字就是符号位,0为正,1为负。 反码 正数的反码是其本身(等于原码),负数的反码是符号位保持不变,其余位取反。 补码 正数的补码是其本身,负数的补码等于其反码 +1 计算机用补码的原因 补码很好的解决了反码负数 阅读全文
posted @ 2023-05-18 21:13 风中凌乱的猪头 阅读(36) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示