- 博客(23)
- 收藏
- 关注
原创 函数指针与指针函数的理解
/最后教如果还有小伙伴不太明白的教大家一个小技巧:看小扩号有没有和函数名前的*括一起,如果一起的话就是一个函数指针,如果不是一起就是一个指针函数。指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。定义:它是指向函数的指针变量,即本质是一个指针变量指向函数的指针包含了函数的地址,可以通过它来调用函数。定义:其本质就是一个函数,返回值是一个指针,也就是说是一个地址值;声明格式:类型说明符 (*函数名)(参数)
2024-04-29 00:47:09
133
原创 14-- 头文件
通常,一个常规的C语言程序会包含多个源码文件(.c),当某些公共资源需要在各个源码文件中使用时,为了避免多次编写相同的代码,一般的做法是将这些大家都需要用到的公共资源放入头文件(.h)当中,然后在各个源码文件中直接包含即可。
2023-12-24 23:54:03
404
原创 12--宏
1 预处理GCC 在第一个阶段会调用预处理器 cpp 来对 C 源程序进行预处理,所谓的预处理就是解释源程序当中的所有的预处理指令,那些诸如#include、#define、#if 等以井号’#’开头的语句就是预处理指令,预处理指令实际上并不是 C 语言本身的组成部分,而是为了更好地组织程序所使用的一些“预先处理的”工作,这些工作用一种叫做与处理指令的语句来描述,然后用预处理器来解释,这些工作包括我们熟悉的诸如文件包含、宏定义、条件编译等等。
2023-12-23 22:17:52
846
1
原创 11--枚举类型
枚举类型的本质是提供一种范围受限的整型,比如用0-6表示七种颜色,用0-3表示四种状态等,但枚举在C语言中并未实现其本来应有的效果,直到C++环境下枚举才拥有原本该有的属性。
2023-12-23 21:32:35
364
1
原创 10--联合体
联合体的外在形式跟结构体非常类似,但它们有一个本质的区别:结构体中的各个成员是各自独立的,而联合体中的各个成员却共用同一块内存,因此联合体也称为共用体。联合体各成员的堆叠效果。
2023-12-20 23:28:07
294
原创 09--结构体
C语言提供了众多的基本类型,但现实生活中的对象一般都不是单纯的整型、浮点型或字符串,而是这些基本类型的综合体。比如一个学生,典型地应该拥有学号(整型)、姓名(字符串)、分数(浮点型)、性别(枚举)等不同侧面的属性,这些所有的属性都不应该被拆分开来,而是应该组成一个整体,代表一个完整的学生。在C语言中,可以使用结构体来将多种不同的数据类型组装起来,形成某种现实意义的自定义的变量类型。结构体本质上是一种自定义类型。结构体的声明:声明语句不是在生产某一个产品,只是向系统报备某一个类型的模型。
2023-12-19 23:25:16
1675
原创 08--函数(1)
函数头:函数对外的公开接口函数名称:命名规则与跟变量一致,一般取与函数实际功能相符合的、顾名思义的名称。参数列表:即黑箱的输入数据列表,一个函数可有一个或多个参数,也可以不需要参数。返回类型:即黑箱的输出数据类型,一个函数可不返回数据,但最多只能返回一个数据。函数体 { }:函数功能的内部实现语法说明:返回类型 函数名称(参数1, 参数2, ……)函数体在设计函数之前应该先想清楚该函数具体实现什么功能。想清楚该函数设计出来之后应该入使用。进入函数的具体设计阶段。
2023-12-18 00:24:22
851
1
原创 07--进程的内存布局
任何一个程序,正常运行都需要内存资源,用来存放诸如变量、常量、函数代码等等。这些不同的内容,所存储的内存区域是不同的,且不同的区域有不同的特性。因此我们需要研究才能清楚内存布局,逐个了解不同内存区域的特性。每个C语言进程都拥有一片结构相同的虚拟内存,所谓的虚拟内存,就是从实际物理内存映射出来的地址规范范围,最重要的特征是所有的虚拟内存布局都是相同的,极大地方便内核管理不同的进程。
2023-12-17 17:01:15
1789
1
原创 06--指针(2)
char型指针实质上跟别的类型的指针并无本质区别,但由于C语言中的字符串以字符数组的方式存储,而数组在大多数场合又会表现为指针,因此字符串在绝大多数场合就表现为char型指针。建议不要随便直接对void 指针进行加减运算(对编译器及其版本有所限制)。语法: 数据类型 * const 指针名 = 指向的地址;语法: const 变量类型 变量名 = 初始值;概念: 这是一个指针,用来指向一个数组的指针。作用:修饰变量,使一个变量不可修改(常量)修饰的是指针本身, 该指针为一个常量。
2023-12-14 23:05:38
865
1
原创 C语言一些特殊函数用法总结
返回值:format的大小,不是复制内容的大小。这个函数会尽可能多的在开头丢弃空格字符,直到遇到第一个非空格的字符,从这个字符开始,如果这个字符是正号或者负号,直接取出这个字符,后面尽可能多的跟随十进制数字,02、">>" 代表 将输出的内容已追加的方式重定向到文件,使用>> 重定向后 文件 中原本的内容不会被覆盖,而是在原有的内容后面 追加 新的内容。它会根据指定的格式字符串和可变数量的参数生成一个格式化的字符串,并将其复制到指定的缓冲区中,直到达到指定的最大字符数或格式化操作完成为止。
2023-12-14 17:50:01
1628
1
原创 06--指针(1)
很多情况下,我们不可避免地会遇到野指针,比如刚定义的指针无法立即为其分配一块恰当的内存,又或者指针所指向的内存被释放了等等。一般的做法就是将这些危险的野指针指向一块确定的内存,比如零地址内存。使用一个整形指针 来指向一个整形数组中的某一个元素;则下列语句中那些是正确的,哪些是错误的?阅读下面两段代码,分析程序的输出内容。
2023-12-13 23:39:06
804
原创 05--数组(2)
C语言只有在第一含义的场合下表现为数组,其他大部分场合都表现为首元素的地址,当数组表现为首元素地址时,实际上就是一个指向其首元素的指针。数组运算实际上就是指针运算。数组在定义之处就已经确定了大小,在未定义的时候可以通过计算得到恰当的大小,当数组被定义出来后他的大小就无法再被改变。语法:int * arr[5];字符串常量是以字符串数组的形式存储在数据段(常量区)。概念:一个用来存放指针的数组。二维数组的加减法问题。
2023-12-13 00:20:44
844
原创 05--数组(1)
数组名字 [ 元素的数量 ] = { 元素1的值 , 元素2的值, ..... ,元素N的值};// 定义数组并进行初始化。数据类型 数组名字 [ 元素的数量 ];// 定义数组 数据类型。
2023-11-08 00:19:07
38
1
原创 04--控制流
如何解决:可以在 编译命令后面 加上选项 -std=c99 or -std=gnu99 即可。5.break 的作用,是用于跳出当前循环结构。4.while与 do…8.break与continue。
2023-11-05 20:07:23
31
原创 03--运算符
gcc编译器默认是贪婪匹配规则 因此他在匹配运算符的时候,会尽可能多的从左往右把所有能组合在一起的符号组合成一个运算符。不管是隐式转换,还是强制转换,变换的都是操作数只在运算过程中的类型,是临时的,操作数本身的类型不会改变,也无法改变。将变量 a 和 b 逐位进行异或操作。所有的操作都是按二进制位进行操作.将变量 a 和 b 逐位进行与操作。将变量 a 和 b 逐位进行或操作。将变量 a 中的每一位向左移动4位。将变量 x 中的每一位向右移动4位。判断x是否小于或等于y+1。将变量 a 中的每一位取反。
2023-11-05 19:13:34
25
原创 判断一个字符串是否是英文还是中文以及字符串的取出
2.只要判断"第一个字节"是否>0x7f,如果大于则是汉字,否则是英文。对UNICODE码(Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文。字符串拷贝:这次用到这个是我要取出一个字符串的前三个字符,所以我觉得这个函数更好用。1.判断字符串中每个ASCII的值,如果是小于0的就是中文字符,反之就是英文。),则是看第一个字节是否为0.
2023-11-01 19:15:14
986
原创 02--基础数据类型
字符串则是由多个字符连续存放形成一整片内存, 并在末尾处需要添加 一个 \0 作为结束标记 (一般情况会自动添加)使用 -f 选项可以列出 指定的条目 open 出现在哪些手册中,在根据实际所需进行查询指定的手册即可。// 定义变量并没有进行初始化操作 该内存中的值是未知。超过数据所能表达的范围,称为溢出,就像汽车里程表,最大值和最小值是相邻的。变量类型 变量名 = 初始化值;// 定义变量并进行初始化工作。比如需要查找的是系统函数手册 man 2 open。14.sizeof运算符。
2023-10-30 22:15:06
45
原创 01--C语言基础入门
1.从学C语言开始你就应该明白我们的任何程序都是从main函数开始执行的,因此在函数中有且仅有一个main函数。4.标准输出的格式控制符。
2023-10-30 21:39:20
31
1
原创 SHELL脚本基础语言
注意: 1.shell 函数定义的时候 不需要填写参数类型 与 函数的返回值类型 ,返回值默认为整型。2.shell 函数传递参数通过 命令行参数 $1 $2 $3 ... 获取。5.Shell 循环控制流--for 循环。3.Shell 脚本的输入输出。4.Shell 选择控制流。10.获取函数的返回值。6. while 循环。7.until 循环。
2023-10-17 21:02:30
42
7
原创 Linux 常用的指令
实现方式: 判断当某一个拥有两个功能按键被按下的时候,有没有其他的按键同时被按下如果有则触发第二功能, 否则使用默认的第一功能。列举目录中的全部文件,包括隐藏文件(.filename)。假设键盘中某一个按键有两个功能那么当该按键被按下的时候怎么区分这两个功能实际触发的是哪一个?cat 显示整个文件的内容:可以在我们不打开文件的情况下把文件的内容输出到命令行终端。cp(copy)命令可以将文件或目录复制到其他目录中。ls 命令显示你的当前目录的内容。chmod命令用于改变文件或目录的访问权限。
2023-10-08 00:11:14
21
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人