- 博客(40)
- 收藏
- 关注
原创 面试问答-1
固定头:20 个字节变长头:20 + 额外最多40字节IP头定义,共20个字节声明是用来告诉编译器变量的名称和类型,而不分配内存。定义是为了给变量分配内存,可以为变量赋初值。变量/函数可以声明多次,变量/函数的定义只能一次。声明不会分配内存,定义会分配内存。声明是告诉编译器变量或函数的类型和名称等,定义是告诉编译器变量的值,函数具体干什么。注意:extern 变量类型 变量名仅是声明。首先定义一个具有5个整型元素的数组。然后定义一个指向该数组的指针,并将其指向数组。
2024-11-05 14:09:02
480
原创 Linux 系统编程 --- day3
功能 : 获得一个文件流指针中的文件描述符参数:stream : 文件流指针返回值 : 成功返回文件描述符,失败返回-1。
2024-08-19 20:08:58
936
原创 Linux系统编程 --- day2
如果从文件的指定位置向后偏移过程中已经超过了文件的当前末尾位置,则会自动以'\0'来填充文件内容,从而形成一种被称为"空洞文件" 的特殊文件。功能:判断当前参数stream的文件流指针是否到达文件结尾,如果到达文件结尾则返回真,否则返回假。功能:将stream流文件中的文件指针从whence位置开始,偏移offset字节的长度。缓存区满刷新缓存区 4096,对普通文件进行标准IO操作,建立的缓存一般为全缓存。功能:获取当前文件流指针的具体位置,一般以文件开头到当前指针的字节数为返回值。
2024-08-13 21:41:16
966
原创 Linux系统编程 --- day1
(1)标准io的概念 1975 Dennis r IO库,C语言的标准,I: 键盘是标准输入设备 = > 默认输入就是指键盘 /dev/inputO: 显示器是标准输出设备 => 默认输出就是指显示器Linux操作系统当中IO都是对文件的操作任何支持标准C的系统都可使用标准IO实现文件存储标准IO在UNIX上是对文件IO的封装一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,加入缓冲区,可以有效减少系统调用的效率,节省系统IO调度资源。
2024-08-12 23:47:14
1175
原创 C语言---结构体
/如果,结构体类型只用一次。(5)64位的平台:如果超过4字节的,按超过的最大的成员变量对齐 ,如果没有超过4字节的,则按成员变量中最大对齐。(3)成员列表 --- 表示要描述的复杂数据中用到的具体的成员变量,多个成员变量之间用分号隔开。void qsort(void *base, //要排序的数组的首地址。结构体变量名.成员名 //表示 访问 某个结构体 的成员。(2)共用体变量中的值,取决与最后一次给到的值,还要看能影响几个字节。(3)初始化的顺序,按照定义的顺序,依次初始化。
2024-08-09 19:54:59
858
1
原创 C语言 --- 指针
指针就是地址 --- 内存单元的编号指针也是一种数据类型 --- 这种数据类型专门用来处理地址这种数据(1)基类型:就是结构体类型,表示该指针所指向的内存空间存放什么类型的数据(2)* :表示此时定义的是一个 指针类型 的变量(3)指针变量名:符合标识符命名规则。
2024-08-06 20:04:20
1118
原创 C语言--函数
(1)类型标识符 --- 数据类型(函数要带出的结果的类型)(2)函数名 --- 标识符,符合标识符命名规则(3)形式参数 --- 表示改函数需要用到的数据(4)函数体代码 --- 实现函数功能的代码。写法:2. 函数调用函数调用的本质:实际上是利用栈的结构,先进后出,保证了函数可以层层嵌套调用。调用者和被调用者:main函数时整个程序的入口,只能是调用者注:函数不支持嵌套定义,但是可以嵌套调用函数名是函数的入口地址。
2024-08-02 21:30:51
1144
原创 学习日记:二维数组
C语言中并不存在真正的二维数组;一维数组类型的一维数组。二维数组数据存储时按行优先存储。类型说明符 数组名 [常量表达式][常量表达式];(1)类型说明符:用来说明数组中存储数据的类型(2)数组名:标识符(3)第一个常量表达式:表示有多少行(4)第二个常量表达式:表示有多少列// 表示定义了一个3行,4列总共12个int型元素的二维数组。
2024-08-01 20:41:55
648
原创 C语言--- 一维字符型数组
原理就是比较字符的ascii值,返回的是两个字符组首个不同字符的ASCII值的差值。使用gets函数时需要注意越界风险,gets函数不会计入换行符。数据类型 数组名 [数组长度];功能:从键盘输入一个字符串;puts函数自带换行符。3.1 gets函数。3.2 puts函数。功能:输出一个字符串。
2024-07-31 21:25:23
745
原创 C语言---排序
思想:首先把第一个位置上的数假设为最小数,用a[1]位置上的数与他比较,如果a[1]上的数比它小,则将a[0]的值赋给a[1]将a[1]的值放在a[0]的位置,再用a[2]与a[1]比较,如果·a[2]比它小则交换两个数,再把它与a[0]上的数比较,如此循环,直到最后两个数比较完。思想:先找到中间位置的数,用这个数和要找的数比较。(每次折一半,直到找到对应数组,或者结束),如果输入的数比中间数小,则输入数在数组的前一半,缩小范围,如果输入的数比中间数大,则表示输入数在数组的后一半,缩小范围继续查找。
2024-07-30 20:13:07
1496
原创 C语言---数据类型2
= 、 -= 、 *= 、 /= 、 %= 也是赋值运算。b:有符号短类型赋给长类型------符号位扩展(高位补符号位)'\\' 表示打印一个 \。'\''' 表示打印 "'\'' 表示打印 'a:无符号短类型赋给长类型------高位补零。可以连续赋值 ---- a = b = c = 10。
2024-07-25 20:34:14
1585
1
原创 linux系统基本命令
step4:Shift + : //进入底行模式 w:保存 q:退出。Ctrl + - ---缩小终端字体。Ctrl + Alt +T --- 打开一个命令终端。Ctrl + Shift + + ---放大终端字体。step:vi 文件名 //回车进入vi,此时vi处于命令模式。ls -l 目录名/文件名 :查看目录/文件属性信息。mkdir 目录1 目录2 目录3:创建多个目录。mkdir 1/2/3 -p :创建多级目录。
2024-07-23 19:19:52
495
原创 数码管显示0-9(数组写法)
共阴极数码管数字0-9的数码段:0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,0x7d, 0x07, 0x7f, 0x6f。
2024-06-12 19:09:14
1643
原创 C语言学习---指针操作数组
(p+i) <=> a[i] //等价 数组下标访问 本质上就是指针运算。&a[0] => 取了一块存放着 int型数据的 空间的地址 int *p-q //相同类型的指针 减出的来的结果为 ,地址之间相差的元素个数。以迭代的方式 (指针操作) 的方式,实现数组累加求和。//含义: 表示 指向了 第N个元素的位置。//数值上看,sizeof(基类型)*N。指针的运算:p+N // 指针+数字。p++ //往后跳了一个元素。p-- //往前。
2024-06-06 21:10:05
223
原创 C语言学习---指针
/表示的p中存放的 地址编号 所代表的那块空间 中要存放的数据的类型。2.指针还是一种数据类型,专门用来保存,地址(内存单元的编号 )这种数据的数据类型。(2) * --- 表示 定义的变量,不是一般变量,而是指针类型的变量。(1)基类型----表示地址编号 所代表的那块空间 中要存放的数据的类型。//作用: * 地址值 =>访问到了地址值对应的那块空间。* //单目运算 ---运算数 必须是 地址值。1.所谓的指针,其实就是地址,地址是内存单元的编号。
2024-06-06 17:21:28
298
原创 每日练习:定义一个n*n的二维数组,并赋予初值,是数组左下半三角元素的值全部置零
【代码】每日练习:定义一个n*n的二维数组,并赋予初值,是数组左下半三角元素的值全部置零。
2024-05-22 19:57:05
224
原创 switch case用法练习:分数等级划分
switch //多分支语句。根据 表达式的结果,去匹配 case后面的 常量表达式的结果,或者是 switch 语句的 } (右花括号)switch提供了 多种情况,匹配同一种操作。问题:从键盘输入一个分数,判断其所在等级;则执行对应的case下面的 语句,匹配(值相等)成功之后,直到遇到了break。switch(表达式)
2024-05-20 17:30:53
653
原创 从键盘输入一个月份,打印月份对应的天数。
运算过程: //实际上是if-else语句的简写。(2)能被400整除。如何判断闰年:(1)能被4整除,但是不能被100整除。问 一下 表达式1?假 执行 表达式3。真 执行 表达式2。
2024-05-20 17:08:16
283
原创 学习日记:二维数组
/n可以是个变量 ,但是使用时,数组不能初始化。//3可以省略 4不能省略。int[4] a[];//本质上省略的还是一维数组的长度。1、定义一个 int a[3][4];,从键盘输入数据,找出数组中能被 3整除 的数据。2.二维数组中,可以省略行数,列数不能省略。1.二维数组中,也可以是可变长数组。本质:一维数组的一维数组。
2024-05-20 11:48:55
440
原创 一维型字符型数组
字符串---//存储字符串数据---结束标志,最后会有一个‘\0’作为结束标志。puts()---将字符串输出,(它默认会输出一个’\n’)。gets()---给字符数组中输入一个字符串。字符串复制 //因为字符数组不能整体赋值。strlen(s)---统计字符串长度。//C语言中不能这样写;//初始化它---用字符串初始化。
2024-05-20 10:42:08
237
原创 学习日记:排序
a[mid]<n缩小区间,到后面大的一部分继续二分查找。: 将一个数,插入到一个(有序数列中),找到合适的位置,然后插入。4、a[mid]==n直接表示找到了。:相邻两个元素,两两比较,小的放前,大的放后。规定:C语言中,统一都是升序排列。前提:查找的数据一定是有序的。:给对应的位置找合适的数。
2024-05-20 09:35:33
265
原创 一维数组的定义
常量表达式---数组长度 //所谓数组长度,指的是这个数组中相同类型的数据的个数。int a[10]---表示定义了一个包含了10个int型变量的数组。3.[常量表达式]----[ ]//定义时,表示此时定义的是一个数组。2.数组名---类似于变量名,通过数组名代表数组。数组元素的引用:数组名[下标];类型说明符 数组名[常量表达式]=sizeof(数据类型)*数组长度。
2024-05-20 09:18:53
847
原创 day5数组
/这些值依次给到前面的元素,后边未初始化的元素,默认为0;// int a[10]---表示定义了一个包含了10个int型变量的数组。数组名:1、数组名代表的数据类型—整个数组—数组也是一种数据类型。所谓数组长度,指的是这个数组中相同类型的数据的个数。//此时数组中存储的是随机值。Sizeof(a)//a代表的是整个数组类型。数组名[下标]//此时中括号表示数组下标运算。
2024-05-14 21:08:34
406
原创 day4 循环
语义:当表达式判断为真,此时执行语句,语句执行完后,继续表达式判断。理解:for(初始条件;使循环趋于结束的语句)假----do-while语句结束,程序继续往下。continue:结束本次循环,继续下一次循环。goto//可以构造循环,本身并不是循环语句。注:1、禁止使用//破坏了C语言的结构化。含义:表示退出本层循环(结束了本层循环)直到表达式判断为假,while结束。先执行循环体语句,再判断表达式;语法格式:goto 语句标号;注意:1、表达式1只会被执1次。真----继续执行循环体语句。
2024-05-13 22:36:08
352
原创 day3 流程控制
匹配(值相等)成功后,则执行对应的case下面的语句,直到遇到了break或者是switch语句的}(右花括号)含义:求解表达式,根据表达式的结果,去匹配case后面的常量表达式的结果;如果表达式判断为真,则执行语句1,否则,执行语句2.则表示if语句结束,程序继续往下执行if后面的语句。else总是和离他最近的前面的尚未使用的if配对。//C语言中用int型来记录,关系运算符的结果。程序继续往下执行if后面的语句,运算过程://实际上是if-else语句的简写。if(表达式)//注意:if后面没有分号。
2024-05-12 20:30:02
830
原创 day2 输入输出
也可以左对齐:-m //%05d ,123----00123----补0。%s---将输入的数据,转换为字符串数据。%x----将输入的数据转换为十六进制格式。%f----将输入的数据转换为小数格式//只能处理4个字节空间。%g---以%f 和%e更简洁的形式输出,书橱结果中不会保留没有意义的0。%d----以有符号十进制格式输出。整型---%d----将输入的数据转换为十进制格式。m//宽度---输入时,表示指定了输入数据的宽度。%c---识别字符---只要是字符都能被识别。
2024-05-10 20:07:35
718
1
原创 DAY1 数据类型
Sizeof(变量名或类型名) // 作用:计算变量名对应的数据类型大小(所占内存单元的字节数)。数据储存的规则是一定的,但因为不同的使用方式,对数据的解读不一样,则最终效果不一样。//初始化---定义变量的同时给值。十六进制转1二进制---1位十六进制数对应4位二进制数。八进制转二进制---1位八进制数对应3位二进制数。变量:1、整型变量:int 4字节。十进制转二进制---除二取余(辗转相除法)十进制转n进制---除n取余法。二进制转十进制---加权求和。N进制转十进制---加权求和。
2024-05-10 19:44:45
451
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人