自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 文件IO:

每个程序在启动的时候操作系统默认为其打开三个描述符与流对象匹配: 0 ==>STDIN_FILENO === stdin。(3)文件描述符是很小的非负的整数 int 0-1023,内核每打开一个文件就会获得一个文件 描述符。O_EXCL,需要和O_CREAT同时使用,表示新建的文件不能存在,成功,否则open就会失败。当flags为O_CREAT时,需要加mode,即设置新建文件的权限。buf:要写入文件的字符串的首地址。故其他文件的文件描述符从3开始。通过文件描述符读取文件中的数据。

2024-08-13 21:27:47 359

原创 标准IO:

等,用于对文件和标准输入输出设备(如键盘和显示器)进行操作。注意:如果没有命令则直接man xx会显示其函数\n,如果没有系统调用则显示系统库函数帮助。命令显示的文件信息:-rw-rw-r-- 1linux linux 72。(2)fgets/fputs 一次一行,多个字符,文本文件以行为单位。I:键盘是标准输入设备,默认输入就是键盘 /dev/input。man xx == man 1 xx查看当前xx命令。man 3 xx 查看xx对应的标准库函数。man man 查询所有man的帮助。

2024-08-12 21:54:11 423

原创 结构体 共用体 枚举 位运算

初始化看每个成员变量具体是什么数据类型,根据各个成员变量自身的数据类型进行初始化,初始化的顺序,按照定义的顺序依次初始化。如果成员变量中没有比4字节大的,按照最大的那个成员对齐。6、void qsort(void *base,//要排序的数组的首地址。在32位平台上,默认都是按4字节对齐的,放在可以被4整除的位置。在64位的平台:如果超过4字节的,按超过的最大的成员变量对齐。//结构体数据引用时,一般引用到具体的成员数据。表示要描述的复杂数据中用到的具体的成员变量。

2024-08-09 22:10:29 557

原创 指针的运用

基类型 * 指针变量名(1)基类型数据类型 :整型、浮点型、字符型、指针类型、结构体类型 、函数类型作用:表示该指针类型所指向的内存空间存放什么类型的数据(2)* //定义时表示此时定义的是一个指针类型的变量(3)指针变量名 //符合标识符命名规则int * p;//a所在的空间是用来存放int类型数据的//不可以,指针类型与b的数据类型不一致&a //表示获得a所在空间的首地址,表示获得了一块可以存放int类型数据的内存空间的地址。

2024-08-06 19:21:33 648

原创 编译流程之预处理

(3)预处理实际上是将宏名用宏值(预处理阶段的字符串)原样替换即文本替换,但是C语言中出现的“宏名”不会被替换。函数的参数是有类型的编译阶段是要进行类型检查的。宏--预处理阶段就使用结束了,宏的使用本质上是文本的原样替换,宏的参数只进行文本替换不进行语法检查。含义:如果没有定义了标识符,则预处理程序段1,即将程序段1的代码保留,否则保留程序段2。含义:如果定义了标识符,则预处理程序段1,即将程序段1的代码保留,否则保留程序段2。预编译--将代码中相关预处理命令执行,最后生产一个只包含C语言代码的文件。

2024-08-05 20:20:59 780

原创 函数的参数

extern:表示你的变量是存在外部的,不在当前文件中,用于多文件编程。二维字符型数组用来储存多个字符串,要操作的,往往都是操作多个字符串,而多个字符串没有所谓结束的标志,看的是数组长度(行数)。static:修饰局部变量,此时会被放在全局区(静态区),程序开始运行就存在,此时局部变量生命周期被延长,从程序开始运行时就存在了,直到整个程序运行结束时销毁,但只在其作用域中可以使用。(4)如果是不同的作用域,但是作用域之间存在嵌套关系,则内层的作用域的同名标识符会屏蔽外层的作用域的同名标识符(就近原则)

2024-08-04 21:57:34 627

原创 调用函数的原理

在Linux中,栈的默认大小通常是由操作系统的参数设置决定的。main----成为调用者-----main函数使整个程序的入口,只能是调用者。函数调用的本质:实际上是利用栈的结构——先进后出——保证了函数可以层层嵌套调用。C语言角度的栈:本质上时一块内存空间,只按照栈这种数据结构来处理和使用的。来查看当前系统中栈的大小限制。函数名——函数的入口地址,系统可以通过函数名找到对应代码的内存地址。数组名 代表的值---首元素的地址即数组所占内存空间的首地址。数组名 代表的类型----int[10]这种数组类型。

2024-08-02 21:06:23 440

原创 了解函数怎么用

1)如果函数不需要带出什么结果,此时返回结果的类型说明符一般设计为void,如果类型为void,一般不写return,如果要写,写为:return;(2)如果返回结果的类型与类型说明符不一致,以类型说明符为准,最终结果的类型多会转为类型说明符表示的类型。数据类型,表示函数要带出的结果的类型,特别地,数组类型不能做函数返回值的类型。(2)main函数之后,需要在使用(函数调用)前,做函数声明:函数名+分号。(4)考虑需不需要带出结果——(返回值对应的)类型说明符。(4)函数体代码:实现函数具体功能的代码。

2024-08-01 21:39:55 249

原创 处理数组的函数和二维数组

从常规上讲,int a[3][4];表示定义了一个包含3行4列总共12个int型元素的一个二维数组,从二维数组的本质上讲,其类型说明符为int[4],数组名[常量表达式]为a[3],而a[3]为一个一维数组,即a[3]这个一维数组的元素又是一个一位数组类型。所以C语言中并不存在真正的二维数组,都是用一维数组模拟的,二维数组的本质实际上是一维数组类型而对一维数组,即数组的数组。在编写程序的过程中经常会对数组进行处理如计算数组中字符串的长度,拼接字符串等等,这些函数均需要在头文件下使用。

2024-07-31 22:16:42 284

原创 排序、一维字符型数组

这里字符串是可以当做字符数组来处理的,但在进行处理时针对的对象不同,进行的操作有所不同,处理对象是字符串,操作的时候往往以结束标志位操作依据,处理对象是数组,操作的时候往往以数组长度为操作依据。这里要注意的是,字符数组可以用来存储字符串,而字符串在内存中的存储方式也是以字符数组形式存储的。字符串有专门的结束标志'\0',故字符串一定以'\0'结束,所以字符串在内存中占用的空间是含'\0'的。1、算法思想:一次冒出一个数,相邻的两个元素,两两比较,小的放前,大的放后。1、算法思想:给合适的位置选择合适的值。

2024-07-30 22:21:21 405

原创 一维数组的使用

(3)[常量表达式]:[]就是数组的类型,即当看到[]即为数组,其中的常量表达式为数组的长度,代表数组中元素的个数。当数组的长度为变量时,应在数组之前对变量进行定义,否则系统没有办法识别数组的长度。数组就是一组相同类型的数据的集合,即一组相同类型的变量的集合。a[0]中下标表示偏移量,即是相对于数组名偏了几个元素,0表是的数组中第一个元素,相对于数组名偏了0个元素。a所代表的值是数组所占空间的首地址,所代表的数据类型为整个数组的类型。中a所代表的类型是int [10],也就是数组的类型。

2024-07-29 21:10:20 211

原创 流程控制的使用

在逻辑与运算中,先从左边的表达式开始运算,且在运算时具有短路特性(截断特性)即当&&左边的表达式为假时就结束运算,不在运算右边的表达式,本次运算的结果就为0。表达式2:表达式3,其含义为:判断表达式1,若为真,则执行表达式2,若为假,则执行表达式3,简单来说条件运算为if-else的简写。语义:如果表达式1为真,执行语句1,执行结束,表示if语句结束,程序往下进行,如果表达式1为假,判断表达式2,若表达式2为真,则执行语句2,执行结束,表示if语句结束,程序往下进行.....

2024-07-28 17:55:26 1168

原创 输入和输出

n在%f和%e中表示保留n为小数,如%.2f表示保留两位小数,在%s中表示保留前n个字符。由于scanf并不是从键盘输入直接读取数据,而是键盘输入的数据先进入缓存区中,按下回车键后,程序才回从缓存区中读取数据,故需要在缓存区中分出空间用于数据的暂存,所以scanf需要知道这部分空间的地址才能读取缓存区中的数据,故需要取地址&。(2)占位符:与printf中的占位符类型一样,但scanf中的占位符是将从键盘输入的数据转换为指定的格式,辅助控制符的使用也有所不同,如%nd,其中n为数据宽度;

2024-07-26 21:03:39 1031

原创 运算符、表达式

\代表一个反斜杠字符\;当rand()函数没有参数时,会随机生成位于0~RAND_MAX之间的整数(RAND_MAX为头文件中的一个宏),由于rand()函数生成的是伪随机数,故每次运行后的结果都是相同的,所以为了使每次运行之后的结果是不同的,引用了srand()函数来初始化随机种子,使用不同的种子会rand()函数会产生不同的随机数,通常会使用time()函数作为种子。此外,左值是可定位的,右值是不可定位的,对于可定位的左值可用&a取地址运算获得a对应的内存空间的首地址编号。

2024-07-25 21:34:29 1193

原创 数据的类型

数据类型的大小表示的是该数据类型所占内存空间的的字节数,int占4个字节,short占2个字节,long占8个字节,long long占8个字节。分析:a =65535在计算机中的存储为1111 1111 1111 1111,其最高位为1,表示其一定是某个负数的补码,“a=%hd\n”中d表示已有符号十进制的形式进行打印,最终打印出的结果为原码,故应有该补码求出原码,有对补码再求补码可得到原码,可得原码为1000 0000 0000 0001,该二进制数的十进制为-1,故输出结果为-1.

2024-07-24 21:19:50 709

原创 初步了解嵌入式

以上两种切换目录形式从形式上看,只要以/开头的都为绝对路径,从含义上看,相对路径的参考起点是当前目录,绝对路径的参考起点为跟目录。//删除目录是需要加-r。//创建一个指定目录。//如果拷贝目录,要加上-r表示递归拷贝,如果目标目录不存在,表示复制出一份, 若果目标补录存在,表示将原目录文件复制到目标目录中。/home/linux为工作目录所在路径,即为主目录(家目录),对于每一个用户都有自己对应的一个家目录,每个用户在自己的家目录下拥有最大权限。

2024-07-23 21:02:46 833

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除