自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构基础

1. 定义相互之间存在一种或多种特定关系的数据元素的集合。2数据与数据的关系3算法,是解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。4.时间复杂度算法时间复杂度也就是执行这个算法所花时间的度量推到时间复杂度1,用常数1 取代运行时间中的所有加法常数2,在修改后的运行函数中,只保留最高阶项。3,如果最高阶存在且不是1,则取除这个项相乘的常数。)<O(n^n)

2026-02-06 18:58:28 782

原创 C语言:构造数据类型和运算符

1.结构体的定义2.定义结构体变量3.初始化4.变量的访问5.结构体的存储字节对齐问题:由于结构体是 自定义类型, 成员变量根据需要来定义的。cpu(32bit)在访问数据 ,都是以4字节为单位读写,效率高。自己定义成员变量的相对地址,不一定在4字节对齐的地址。编译器就会帮你把成员变量的地址,扩展到4字节对齐的地方。那么结构体的大小,就变大了。结构体成员必须存放在内存地址为自身类型大小的整数倍的内存地址找到结构体中,成员变量占用内存最大的。那么结构体的总大小,应该 最大成员占用内存大小的整数倍。

2026-02-03 21:23:36 636

原创 C语言:万能指针,指针数组,数组指针

对一维数组 & 操作: &a[0], &a(不能看作二级指针,特殊) ,a 地址不变(&a[0])。对数组指针 执行 * 操作 , *&a , 地址不变(&[0]). *&a == a;sizeof(int *) = 8 sizeof(int []) = sizeof(int)* 元素的个数。其他任意类型的指针 给void* 赋值,或者参数传递,不需要额外的操作,直接赋值或传递参数,就可以了。如果没有转换,,*p ,p+1,都会失败,没有void 类型的变量。void* ,函数的返回值, 函数的参数。

2026-02-02 19:09:22 746

原创 C语言:指针函数和函数指针的区别,二级指针

函数指针, 本质是一个指针,存储某一个函数的地址。函数名 本质,他是一个指针,存储了一个地址,指向代码段中 对数据操作代码。1.函数调用的地址传递中,需要改变,指针变量本身(二级指针,改变指针的指向)。如果需要改变指针指向的内容,使用以一级指针。回调函数,会被别动调用的函数。==区分函数设计者,函数的调用者。2.函数传递参数的过程中, char **(二级指针) , char *[],指针数组 ,兼容类型。函数的返回值为指针类型 的函数,叫指针函数。定义: 指向指针变量的指针,是二级指针。

2026-01-31 19:46:44 629

原创 C语言 指针的算术运算以及和数组的关系

数组的数组名 ,是一个指向数组中第一元素的指针常量。数组名的本质,就是一个指针常量(加了一些限制, 指针中存储的地址,不能改变).形参是实参的复制品,只能读取实参的数据,在被调函数内部,无法通过修改形参 而改变实参。基本数据类型的变量 ,构造类型的变量。就可以在被调函数的内存,通过间接访问方式,通过修改形参,进而修改实参。& int* 执行取地址操作 int** 二级指针, 存储地址的地址。指针在使用时候,有两个概念 ,指针变量本身, 指针指向的内容。使用指针,访问数据。比使用数组方式访问,高效,简洁。

2026-01-29 19:15:28 705

原创 第七章 指针

基类型 * 指针名;int* p1;// * 不是解引用 类型说明符 int *char *p2;//float *

2026-01-28 19:01:06 752

原创 函数的递归和预处理指令

define 宏名 宏值大部分情况,宏定义放在文件的开头不要加分号宏定义是 代码替换,中间不进行任何的数据计算。宏定义 的标识符 一般都大写在gcc预处理阶段 ,直接替换。

2026-01-27 20:05:04 531

原创 函数的传参

在传递数组过程,如果使用值传递, 那么被调函数中也需要创建一样大的数组。有的时候,数组可能会很大。在被调函数结束的时候,这段空间就需要回收。在c语言中,人为 数组也是值传递的话,效率非常低下。在函数调用传参中,如果是传递的是 ==数组==。这种传递方式,就是地址传递了。形参获得了实参对应内存空间的地址,所以就可同通过形参修改实参。在被调函数定义中, 只需要传递数组名。在被调函数中,是可以通过修改形参,来修改主调主调中的实参。这个就是数组传递的时候,是地址传递,而不值传递的原因。形参依然可以修改实参。

2026-01-26 18:44:59 72

原创 C语言:函数的定义,调用,变量的作用域和生命周期和储存类型

定义语法返回类型 函数名称(数据类型 参数名1,数据类型 参数名2,数据类型 参数名3,数据类型 参数名4,...) 参数列表return 表达式;} //函数体返回值 :类型 int ,long, double ,float ,char, void(表示不返回任何数据)。不能返回数组类型。情况1,表示函数调用是否成功的状态 0(表示调用成功) 1(调用失败)情况2,计算的结果。函数名 :标识符, 字母,数字 ,_ ,不能数字开头。见名知意参数:会与其他模块进行交互。

2026-01-24 20:03:57 1040

原创 C语言:一维字符数组和二维字符数组

char 数组名[行数][列数];行,列,必须是整形常量。

2026-01-23 19:11:21 446

原创 C语言 :一维整形数组排序,二维整形数组,一维字符数组基础

如果需要存入 "hello" , 元素个数 除了字符的个数(5个)外, 还需要一个\0 的空间。a是一个二维数组, a里面有3元素, 其中每个元素又是一个 可以存储5个整形变量的一维数组。排序, 把一个数组按照特性规则(默认从小到大)进行排列位置的操作 ,排序。// a 的类型 int [][]数据类型 ,可以是基本数据类型 ,不能是void。存储多个字符的数组。数据类型(char) 数组名[元素的个数];数据类型 数组名[行数][列数];行数,列数 ,要求是 整形常量。

2026-01-22 18:45:50 462

原创 C语言do while,goto,双重for循环语句,和数组基础

int a[5];会开辟内存空间。int:数据类型 a:数组名 [元素的个数];数据类型:基础数据类型 , 不是void数组名 :标识符, 字母,数组,_ ,不能数字开头元素个数 : 常量,常量表达式 ,不能是变量,变量表达式(GNU gcc 是允许)

2026-01-21 19:01:19 1010

原创 C语言流程控制

表达式3) // 表达式1 ,初始化(控制变量,也可以有其他的初始化) 表达式2 ,控制循环是否继续运行 表达式3 ,对控制变量进行增量控制。如果表达是1,2 为假,就判断表达式3 ,如果为真,执行语句块3. 语句块3 执行完,整个if 结束。如果表达是1 为假,就判断表达式2 ,如果为真,执行语句块2. 语句块2 执行完,整个if 结束。先判断表达式1 ,如果表达式1为真,则执行语句块1。while(表达式) 表达式(关系,逻辑)的值, 真,假 , 类型 int i<10。最终导致,循环条件不满足。

2026-01-20 18:19:19 342

原创 C语言字符串的输入输出和流程控制基础

截断效应, 在逻辑表达式中,使用逻辑与(&&), 如果表达式左侧的式子,逻辑值为假。原因,右侧表达式的值为真或假,都不影响整个表达的值。左右表达式中,只要有要一个为真,真个表达式为真。// 字符数组,并初始化 char * , char[] 兼容类型。表达式运行完,a的值是10 ,表达式的也是10。--》 表达式的结果是 真(1),假(0), 非0 即为真。3. if,或者else 后,都使用大括号,包含代码(空语句,一条语句,多条语句)。4. if(表达式) 后面,也就是这一行,最后不要加分号。

2026-01-19 18:47:31 563

原创 C语言—输入输出函数

第二个参数 , 如果接收的是一个整型的 int num , 在scanf中的第二个参数序需要写成 &num。c,表示需要输出的字符,可以是常量,变量,表达式。%0nd -> %5d, 指定显式的域宽(占5个字符的位置) ,默认右对齐, 空白位置补0。%nd -> %5d, 指定显式的域宽(占5个字符的位置) ,默认右对齐。为了是num能够正常接收输入,%-nd -> %-5d ,指定显式的域宽(占5个字符的位置) ,左对齐。

2026-01-17 18:29:48 308

原创 C语言运算符

/ %d int 把num2中的数据内容当作 有符号的数据对待 最高为是符号为, 31bit 都是数据。// int ==c 如果c(1byte) 中数据是一个负数的话(-100),num(4byte),扩展位(高位)为补1。如果c(1byte) 中数据是一个正数的话(100),num(4byte),扩展位(高位)为补0。在逗号表达式中,最后一个表达式的值,是真个逗号表达式的值。//这个叫初始化,定义变量的时候,会开辟内存,第一次装入的值。/= ,先求商,在赋值 . 除数不能为0 ,后置++ ,先用再+

2026-01-16 19:23:13 619

原创 C语言常量和变量

/ 3位数-》 表示ascii表中的 8进制数 ,表示单个字符S。4.变量可以变化的原因,变量在定义的时候,会给变量分配对应数据类型大小的内存空间。3.变量名 的组成,数字,字母,下划线 ,不能数字开头。// 在定义变量的时候,给初值。// “hello\0” 6个字符。// "abc\0" 长度是4个字符。变量如果没有初始化,那么,变量中值,是一个随机数。运算符,符号, 对数据 处理,运算,或逻辑值的判断。// 光标回到本行的第一个位置。"hello\0";// 0x 表示的是十六进制。

2026-01-15 18:19:25 416

原创 嵌入式 :gcc 编译步骤

把 2.s 编译成目标文件(二进制文件)把 stdio.h 内容复制到 2.c。在目标文件的基础上加链接信息。把 2.i 翻译成汇编语言。5,检查两个文件是否相同。

2026-01-14 19:27:53 54

原创 c语言基础

根据类型表示数据的范围的不同,分为 short(2byte),int(4byte) .long(8byte) . 通过c提过的。signed short == short 正,负 2 byte - 2^15 - 2^15-1 -32768 - 32767。5. 给移动的位数 +127 -》 2+127 =129 = 1000 0001(指数位 ,8bit) 填入符号位后一位。signed int == int 4 byte -2 ^31 - 2^31-1 -21 亿 - 21亿。直到小数部分为0位置。

2026-01-14 18:56:43 644

原创 嵌入式 :Linux 命令

linux基础

2026-01-13 20:01:44 88

空空如也

空空如也

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

TA关注的人

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