- 博客(16)
- 收藏
- 关注
原创 Linux网络编程
进程间的通信:同一主机内通信传统的进程间通信方式(管道(有名,无名),信号)IPC对象(共享内存,消息队列,信号量(灯)集)不同主机间通信。
2024-03-06 22:19:55 884
原创 系统调用和目录IO
Mask -- 标记,掩盖//掩码需要包含头文件 #include 功能:获得一个文件描述符参数:pathname:文件名flags:必须项:他们之间是互斥的,所以有且只能有一个O_RDONLYO_WRONLYO_RDWR可选项:O_CREAT, 创建文件 //这个标志量存在,则需要指定参数 modeO_EXCL, 需要和O_CREAT同时使用,表示新建的文件不存在,成功,否则open就会失败O_TRUNC 文件内容清空O_APPEND追加。
2024-03-04 19:44:51 880
原创 UNIX标准IO
标准IO --- 文件指针 流指针(操作对象 --- FILE *流指针)1.打开Fopen2.读写fgetc/fputc 单个字符fgets/fputs 字符串fread/fwrite 面向对象3.关闭fclose(fp);4.定位rewind(fp)重置流指针为文章开头fflush(fp)释放缓存区到流指针ftell(fp) 计算从文章开始 到 当前流指针位置的长度。(char)fseek() 把流指针定位到指定位置文件权限:
2024-03-04 19:22:00 772
原创 Linux 系统编程基础知识
基础概念文件: 一组相关数据的集合。文件名: 这个集合的名称。B -- block -- 块设备文件 -- eg:硬盘这一类的存储设备(一次性读一堆)C -- character -- 字符设备文件 --eg:鼠标键盘(一次性读一个字符)D -- directory(目录) -- 目录文件 -- eg:文件夹- -- regular -- 普通文件。
2024-03-01 21:57:37 895 1
原创 结构体共用体枚举和位运算
const的不同用法:在C语言中,const关键字用于声明一个常量。它可以用来修饰变量、指针等,表示该变量或指针的值是不可修改的。下面是一些常见的const的使用方式:1.修饰普通变量:// 声明一个整型常量a,值为10*p = &a;// 声明一个指向整型常量的指针p,指向变量a的地址3.修饰指针变量(常量指针)int *= &a;// 声明一个整型常指针p,指向变量a的地址,指针本身的值不可修改= &a;
2024-02-23 23:03:51 1791
原创 指针和结构体
常量 带小数 C语言默认识别为double型 8 个字节。例子:float i = 2.0;i == j 为假 因为 i 为四字节 ,j 为八字节 ,j的精度更高。例子:i+++++i表达式报错贪心原则:从左到右 逐个字符扫描,尽可能多的结合成c的运算符i ++ ++ + I ++运算符是自右向左结合((i++)++) + i (i++)整体为表达式,为右值,不能进行++运算,++运算需要左值逗号运算(顺序求值表达式)Int I = 10;
2024-02-23 22:52:30 347
原创 数组的指针
第一个括号( a + 3 ) a 的类型为 与int (*p)[4]相同的类型 即int * [4] +3即是向后偏移 3 * 4 * 4 个字节, 第二个括号 (int *) 将(a + 3 )类型强转为 int * 型,整体 – 3 即向前偏移 3 * 4 个字节。当 p + 1 时 指针变量p将会加 int [4] 个字节 指向 a[1]的地址即a[1]的首地址。这个指的是 *p 代表的是长度为10的一维整形数组。*(*(p + 1) +2) 是int型,打印出来指针指向的a[1][2]的值是7。
2024-02-04 21:25:30 403 1
原创 C语言字符指针
指针变量前的 const 是指不能修改指针指向的变量, 而不是指针本身的存的地址不能被修改,即 *p不能被修改, p可以被修改。e1.自己写函数实现字符数组的复制,连接,比较,打印,写出从一个长字符串中找到与一个小字符串,并返回第一次相同的下标。指针p存的地址不能修改,p存放的地址指向的变量可以修改,const修饰的p。在函数内定义的 指针 也是存在栈区, 当指针指向字符串常量时,指针不能修改,定义了一个万能指针P,p指针可以存任何类型的地址。代表指针变量p里面存放的是s数组的首元素s[0]的地址。
2024-02-03 19:55:53 388 1
原创 二维数组函数
当一维数组作为实参传递给子函数时,不能再子函数内计算出数组的长度,传递给子函数的是首元素地址,所有需要在主函数加一个参数 数组长度 一起传给子函数。当程序在主函数中调用子函数时,系统pc寄存器会先保存当前指令的地址,然后加载子函数首个指令的地址,然后程序运行跳转到子函数的首个指令。可以传参一个常量,fn函数不可能将常量10的值给修改了,所以fn中的形参是另外的内存空间复制的 常量10。函数有两个及以上的形参时,当主函数调用函数进行传参时顺序是自右向左的。在C语言中不加类型说明的函数,自动按整形处理。
2024-02-03 09:17:41 496 1
原创 C语言指针
a[i] 等价于 *(a + i) a本身还是指向a[0]的地址,没有改变, a是地址常量不能被修改。对一个指针变量进行加n的操作 是 在指针所指的地址 + n * sizeof(基类型),得到的也是一个地址,通过指针p的地址来修改 i 的值 为间接访问。指针p存的变量i的地址,称为指针变量P指向整形变量i。子函数中 *p 是整形 i, 而p是指针,是i的地址。的*不是指针运算符,仅仅是int *定义指针,如同 int a[];NULL表达的是指针的状态,只有指针不为空是才能访问,否则不能访问。
2024-02-02 19:26:07 392 1
原创 函数和预处理命令
” 系统先在用户当前目录中寻找包含的文件,若找不到,再按标准方式查找 即 <> 的方法 一般来说用系统库函数 用<> 自己创建的文件 用“ “ 来节省时间。全局变量:在函数之外定义的变量称为外部变量也就是全局变量,全局变量可以被本文件中其他函数所用。花括号内定义的标识符只在花括号内生效就是 局部作用域。标识符的作用域具有包含特性,可以在作用域内包含作用域。局部变量:在一个函数内部定义的变量是内部函数变量,它只在本函数范围内有效。静态生存期:某个变量的生存期和程序的运行相同。
2024-02-01 21:17:33 1427 1
原创 二维字符数组和函数
e2.定义一个数组char s[] [100] = {“Hello”, “China”,”Amercia”,"World!代码练习e1:创造一个二维字符数组 char s[] [100] = {“Hello”, “China”,”Amercia”,"World!C程序的执行是从main函数开始的,如果在main函数内调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。可以使用 char s[ ] [ ] = { } 来进行初始化,如上图所示,s数组内存空间也如上图所示。
2024-01-30 20:07:42 405 1
原创 字符数组和二维数组
e2.创造一个二维数组a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13};返回值为 int 型 ,返回值大于0 则s1 > s2 ,小于0 则s1 < s2 ,等于0则 s1 = s2。e1.定义一个数组s[100] 将整形 i = 1234 转换为字符型 存入 s[100]中。2.有序性:a[0]的内存空间小于a[1]求二维数组列数可以用 sizeof(a[0]) / sizeof(a[0][0]);返回值为 s1[i]里的ASCII码减s2[i]里的ASCII码。
2024-01-29 20:06:59 944
原创 C语言数组及排序算法
类型说明符 数组名[ 常量表达式 ];例 float s[100];定义了一个浮点型数组 数组名为 s ,此数组有100个元素[ ]括号内常量表达式应为非0无符号整形表达式a[10]创造出的10个元素为a[0]-a[9]且元素类型与定义a[10]相同数组存储具有1.单一性 2.有序性 3.连续性数组存储方式是以首元素地址为相对地址 通过下标计算偏移量 进行偏移。注意事项:1.使用数组时 下标不能超过定义数组的数。如果超过将会发生越界访问,造成严重大错误。
2024-01-28 23:24:41 2177
原创 C语言循环语句
表达式2 不能省略,省略将恒为真一直循环,表达式3可以省略,可以将循环趋于结束的语句放在循环内。先执行执行一次循环体语句,然后判断表达式是否为真,为真则再执行一次循环体语句,为假则直接跳出循环。当表达式为真时执行大括号内的语句,执行完后将再次判断表达式是否为真,为真则再次执行大括号内语句,直到表达式判定为逻辑为假时则直接跳出大括号。While执行必须要有循环3条件。先执行表达式1 ,进行表达式2的逻辑判断,若为真则执行循环体语句,然后执行表达式3 再次判断表达式2,直到表达式2逻辑为假,则跳出循环。
2024-01-26 19:28:59 377
原创 C语言选择语句
值为0则 逻辑为假 为非0则 逻辑为真表达式逻辑为真 则返回值为 1 逻辑为假 则为 01.if 语句 if ( i ) { } i判定为真 则执行{}内的语句} i判定为真(小括号表示 1 )执行大括号内的语句if ( ) 括号里为假则判断 else if ( )括号里的语句 若为真 则执行else if 大括号内语句else {;} 若if()和else if()括号里表达式都逻辑为假 则执行else 内的语句 else 不能单独出现。
2024-01-25 20:13:53 379
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人