自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 函数指针的理解

第二个代码是一次函数声明,声明的是signal函数,signal函数的参数有两个,第一个是int类型,第二个是函数指针类型,该类型是void(*)(int),该函数指针指向的函数,参数是int,返回类型是void。signal函数的返回类型也是函数指针类型,该类型是void(*)(int),该函数指针指向的函数,参数是int,返回类型是void。数组指针——指向数组的指针——存放的是数组的地址——&数组名就是数组的地址。函数指针——指向函数的指针——存放的是函数的地址——函数名就是函数的地址。

2023-08-16 17:00:40 60

原创 指针传参的理解

当一个函数的参数部分为一级指针的时候,函数可以接收什么参数——

2023-08-16 15:05:58 71

原创 二维数组传参

【代码】二维数组传参。

2023-08-16 14:36:35 61

原创 一维数组传参

数组传参,形参是可以写成数组形式的。数组传参的本质是,传递了数组首元素的地址,因此数组传参,形式也可以是指针。

2023-08-16 14:09:38 61

原创 数组指针的理解

其中arr是数组首元素的地址。

2023-08-16 13:55:35 32

原创 字符指针的理解

【代码】字符指针的理解。

2023-08-16 11:30:46 31

原创 浮点数的存储规则

因此规定,在计算机内部保存M的时候,默认这个数的第一位总是1,因此这个1可以舍去,只保存后面的xxxxxx部分。但是我们知道,科学计数法的E是可以出现负数的,因此IEEE标准规定,存入内存时候的E的真实值必须再加上一个数。而对于64位的浮点数,最高的1位时符号位S,接着的11位是指数E,剩下的52位是有效数字M。3.当E为全1的时候,此时如果有效数字M全为0,表示的是±无穷大(正负取决于符号位的S)。而对于32位的浮点数,最高的1位是符号位S,接着的8位是指数E,剩下的23位是有效数字M。

2023-08-15 23:28:52 87

原创 数据类型介绍

大端字节序存储:把一个数据的低位字节处的数据存放在内存的高地址处,高位字节处的数据存放在内存的低地址处小端字节序存储:把一个数据的低位字节处的数据存放在内存的低地址处,高位字节处的数据存放在内存的高地址处。有大小端的区别——在计算机系统中,是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言系统中除了8字节的char外,还有16bit的short型以及32位的long型。

2023-08-15 17:07:26 97

原创 结构体的声明

注意:结构体传参的时候,要传结构体的地址。(函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候结构体过大,参数压栈的系统开销会比较大,因此会导致性能的下降)结构体——结构体是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。数组——一组相同类型元素的集合(与结构体的区别)结构成员的类型——结构成员可以是标量、数组、指针,甚至是其他结构体。对于复杂对象就需要用结构体了,比如说人——姓名+性别+年龄...为什么要出现结构体——当前学习过的类型都是内置类型。

2023-08-15 12:12:58 47

原创 指针数组的理解

指针数组是数组,是仅存放指针(地址)的数组。营造一种二维数组的效果。

2023-08-14 22:33:21 30

原创 二级指针的理解

二级指针的变量就是用来存放一级指针的地址。

2023-08-14 21:01:41 35

原创 指针的一些理解

C语言标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。2.&数组名,此时数组名表示的是整个数组,取出的是数组的地址,数组的地址和数组的首元素的地址在值上面是一样的,但是类型和所表示的意义是不一样的。但是有两个例外——1.sizeof(数组名),数组名单独放在sizeof内部,数组名表示的是整个数组,计算的是数组的大小,单位是字节。野指针——野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

2023-08-14 20:27:07 37

原创 表达式求值

隐式类型转换——C语言中的整型算数运算总是至少以缺少整型类型的精度来进行的,为了获得这个精度,表达式中的字符和短整型操作数在使用之前被替换成普通整型,这种转换就叫做整型提升。两个char类型的相加,在CPU执行的时候也要先转换成CPU内整型操作数的标准长度。算数转换——如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的类型转换为另一个操作数的类型,否则操作就无法进行。C语言中的int —— signed int(有符号位的) unsigned int(无符号位的)int num = f;

2023-08-14 10:56:15 30

原创 下标引用、函数调用和结构成员

接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。. 结构体.成员名 -> 结构体指针->成员名。故函数最少有一个操作数,就是函数名。. -> ——成员访问操作符。操作数:一个数组名+一个索引值。[ ]——下标引用操作符。( )——函数调用操作符。

2023-08-13 18:50:07 41 1

原创 逗号表达式的理解

逗号表达式,就是用逗号隔开的多个表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果。

2023-08-13 17:44:39 254 1

原创 条件操作符(三目操作符)

表达式1为真,则跳到表达式2,否则跳到表达式3。表达式2 :表达式3。最简单的应用,比较两个数的大小。

2023-08-13 17:32:09 39 1

原创 逻辑操作符的理解

要区分逻辑与和按位与——1 & 2 ——0 1 && 2 —— 1。要区分逻辑或和按位或——1 | 2 ——3 1 || 2 —— 1。||——左边操作数如果为真,右边无需计算。注意:&&——左边操作数如果为假,右边无需计算。&&——逻辑与操作符。||——逻辑或操作符。

2023-08-13 15:46:55 34 1

原创 sizeof和数组

【代码】sizeof和数组。

2023-08-13 15:02:39 33 1

原创 单目操作符的理解

对于sizeof后面的括号,当括号中的内容不是类型名的时候,括号可以省略,这样也就说明sizeof不算函数。sizeof是在计算类型创建变量或者变量的大小,单位是字节。对size_t类型的数据进行打印的时候可以使用%zd。注意:取地址和*是一来一回的,可以配合着使用。sizeof计算的结果是size_t类型的。sizeof是操作符——单目操作符。~——对一个数的二进制位按位取反。*——解引用(间接访问操作符)size_t 是无符号整型的。sizeof内存大小计算。( )——强制类型转换。

2023-08-13 15:01:51 47 1

原创 赋值操作符的理解

复合赋值符——+= -= *= /= ......注意:赋值操作符是可以连续使用的。

2023-08-13 10:09:45 37 1

原创 位操作符的理解

这样可以联想到得到某一个数任何一位二进制位的方法,先利用移位操作符,将其移动到最后一位,再将其按位与1,可以得到这一位。关于按位与的应用,可以将某个数与1进行按位与操作,得到的是这个数最后一位(0或者1)。有三种位操作符,&——按位与,|——按位或,^——按位异或。注意:他们的操作数必须都是整数。按位异或——相异为1,相同为0。按位或——有1出1,没1出0。

2023-08-13 09:01:32 38 1

原创 移位操作符的理解

一个整数是四个字节,也就是32个bit位,一个整数写出二进制序列的时候,就是32个bit位。整数在内存中存储的都是补码的二进制序列,并且在计算的时候也使用的是补码。其中左移 << 的效果,相当于结果乘了2,左移的规则是左边丢弃,右边补0。移位操作符移动的是二进制的位,并且移位操作符的操作数只能是整数。对于有符号的整数来说,最高位就是符号位,0为正,1为负。原码——按照数值的正负,直接写出的二进制序列就是原码。算数右移——右边丢弃,左边用原该值的符号位填充。反码——原码的符号位不变,其他位按位取反。

2023-08-13 08:15:08 73 1

原创 关于算数操作符的理解

对于/操作符,如果两个数都是整数,则进行的是整数的除法,如果有一个数是浮点数,则进行的是浮点数的除法。对于取模操作符%,两个数必须都是整数,返回的是整除之后的余数。加减乘除再加一个取模( + - * / %)其中加减乘除都可以用于整数以及浮点数。

2023-08-13 07:32:41 37 1

原创 数组进行传参

但是有两个例外——1.sizeof(数组名),这里的数组名表示的是整个数组,计算的是整个数组的大小,单位是字节。2.取地址数组名(&数组名),这里的数组名表示的也是整个数组,取出的是整个数组的地址。数组名是什么——数组名就是地址,通常来说数组名就是数组首元素的地址。数组传参传的是首元素的地址,形参部分本质上是指针,也可以写成数组。除此之外,数组名表示的都是数组首元素的地址。

2023-08-06 14:24:07 165

原创 冒泡排序的思想

比如说一组数据,5,4,3,2,1。是按照降序进行排列的,现在要求按照升序进行排列,第一次将5和4进行比较,然后这组数据变成了4,5,3,2,1。第二次将5和3进行比较,而后这组数据变成了4,3,5,2,1再然后以此类推,这组数据变成了4,3,2,1,5.此时5就在最后,这代表的是完成了一套冒泡排序,要想将这组数据完成升序,则需要4套冒泡排序,最后的1默认在首位是最小的,就不需要再进行一套冒泡排序了。比如说现在有n个数据要进行冒泡排序,则最多需要n - 1套冒泡排序。

2023-08-06 13:41:40 25

原创 关于数组越界的问题

即在创建数组的时候,要注意到数组的下标是存在一定范围的,默认规定数组的下标是从0开始的,假如有n个元素,那么下标的结尾就是n - 1。而C语言本身是不会做数组越界问题的检查的,如果存在此问题,编译器也不一定会进行报错,因此要求我们自己在编写代码的同时,要注意检查数组是否存在越界的问题(编译器不报错并不意味着程序就是正确的)比如说像这个,数组的下标最大仅是arr[9],但是经过for循环的赋值之后,最后的输出结果会存在arr[10],这就要求我们自己在写代码的时候注意此类问题的存在。

2023-08-06 13:23:46 123

原创 二维数组的一些理解

不完全初始化用大括号初始化,每一行的数组元素更为清楚,并且每一个大括号里面也可以进行不完全初始化二维数组如果初始化了,行数可以省略,但是列不可以进行省略。

2023-08-06 13:09:35 28

原创 关于一维数组的理解

数组其实就是一组相同类型元素的集合。数组的创建——变长数组(既不同于普通的数组,后缀中是已经给定的常量,而是一个变量)//变长数组的引用只有在C99的标准之后才出现,并且变长数组是不能够进行数组的初始化的。数组的初始化指的是,在创建数组的时候给数组内容一些合理的初始值(初始化)。不完全初始化,剩余的元素默认初始化是0。此时数组只有arr[0],arr[1],arr[2]。

2023-08-05 15:39:15 26 1

原创 关于Static关键字的一些使用

此时的局部变量就是静态的局部变量。而静态的局部变量,首次进入函数被初次创建,出函数的时候会被保存,不会被销毁,再次调用此函数的时候,静态局部变量不会再次被创立,所用的值仍是上次出函数的时候的值,生命周期较长。全部变量具有外部链接属性,这种属性决定了全部变量在多个文件之间可以互相使用,而Static修饰全局变量的时候,将外部连接属性变成了内部连接属性,即该变量只能在当前.c文件之中使用,不能够在其他.c文件之中使用,即使其他文件加上extern的声明也不行,即带有static的全局变量改变了变量的作用域。

2023-07-21 11:13:09 19 1

空空如也

空空如也

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

TA关注的人

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