- 博客(19)
- 收藏
- 关注
原创 指针的深入学习(5)
把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调用,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。使⽤回调函数,模拟实现qsort(采⽤冒泡的⽅式)。这⾥需要补充介绍结构指针和结构体成员访问操作符。回调函数就是⼀个通过函数指针调⽤的函数。2.1 使⽤qsort函数排序整型数据。2.2 使⽤qsort排序结构数据。以下是使用回调函数实现一个转移表。2. qsort 使⽤举例。
2026-11-02 16:55:13
261
原创 指针的深入学习(4)
所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。2. 代码中的 void (*)() 是函数指针类型, (void (*)())0 类型放在括号中意思是强制类型转。3. *(void (*)())0 ,前⾯加⼀个 * ,就是调⽤0地址处的这个函数,根据函数指针的类型能知。1. 上述代码其实是⼀次函数调⽤,调⽤的是0地址处的⼀个函数,这个函数没有参数,没有返回值。数组的每个元素是⼀个⼀维数组。是⼀个指针变量,然后指针指向的是⼀个大小为10个整型的数组。
2026-11-01 23:58:27
116
原创 指针的深入学习(3)
同理arr[i] 应该等价于 *(arr+i),数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移 量求出元素的地址,然后解引⽤来访问的。上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。数组名和数组首元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。的方式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,而且是数组⾸元素的地址。找到的数组元素指向了整型⼀维数组,
2026-11-01 20:46:03
202
原创 指针的深入学习(2)
上述代码中n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改n。NULL 是C语⾔中定义的⼀个标识符常量,值是0,0也是地址,这个地址是⽆法使⽤的,读写该地址会报错。const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指。学习指针的⽬的是使⽤指针解决问题,那什么问题,⾮指针不可呢?
2026-10-29 23:57:31
36
原创 指针的深入学习(1)
把上⾯的例⼦对照到计算机,计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的 数据也会放回内存中,内存空间的管理是把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。同理64位机器,假设有64根地址线,一个地址就是64个⼆进制位组成的⼆进制序列,存储起来就需要 8个字节的空间,指针变量的大小就是8个字节。的意思就是通过pa中存放的地址,找到指向的空间, *pa其实就是a变量了;注意指针变量的大小和类型是⽆关的,只要指针类型的变量,在相同的平台下,大小都是相同的。
2026-10-28 23:35:51
240
原创 操作符的深入学习(2)
运算符的优先级顺序很多,下⾯是部分运算符的优先级顺序(按照优先级从⾼到低排列),建议⼤概 记住这些操作符的优先级就⾏,其他操作符在使⽤的时候查看下⾯表格就可以了。优先级指的是,如果⼀个表达式包含多个运算符,哪个运算符应该优先执⾏。是左结合,还是右结合,决定执⾏顺序。C语⾔的操作符有2个重要的属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。的优先级相同,它们都是左结合运算符,所以从左到右执⾏,先计算。
2026-10-28 19:22:32
84
原创 操作符的深入学习(1)
1、操作符的分类算术操作符:移位操作符:<< >>位操作符:& | ^赋值操作符:+=-=*=/=%=<<=>>=&=|=^=单⽬操作符:!++--sizeof类型关系操作符:>=<===!逻辑操作符:&&||条件操作符:?逗号表达式:下标引⽤:[]函数调⽤:()结构成员访问:->2、⼆进制和进制转换进制、进制、进制、进制是数值的不同表⽰形式,⽐如:数值15的各种进制的表⽰形式:15的2进制:111115的8。
2026-10-27 23:57:00
145
1
原创 函数的递归和实现
直到⼦问题不能再被拆分,递归就结束了,所以递归的思考⽅式就是把⼤事化⼩的过程,递归中的递就是递推的意思,归就是回归的意思。函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归。函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。所以如果采⽤函数递归的⽅式完成代码,递归层次太深,就会浪费太多的栈帧空间,也可能引起栈溢。如果n是⼀位数,n的每⼀位就是n自己,如果是多位数%10可取得下一位数字,反复。每次递归调⽤之后越来越接近这个限制条件。
2026-10-27 19:39:30
233
原创 写一个扫雷代码
这条主要使rand函数生成的为随机值,包含的“time”就是一个一直在改变的值,从而可实现随机的效果。使用do....while来实现选项,因为只需要执行此选项即可,因此设置返回值为void。此时实现game这个函数,因为只需要它执行,不需要返回类型,同理设置为void。第一条是初始化棋盘,在此棋盘内埋雷,第二条则是隐藏棋盘,来猜雷在哪里。当排雷时,会不可避免的越界,因此可以再加上一圈棋盘来防止越界。这两条是创键棋盘,一个用来安置,一个用来查看。这是InitBoard函数的实现。这两条是用来初始化棋盘。
2026-10-26 23:51:32
252
原创 函数的补充知识
写出函数的具体实现(函数体{}),分配内存、生成指令。定义也是一种特殊的声明。以加法函数为例如果把定义写在调用前// 定义在main前面,自带声明int main()return 0;定义本身就充当了声明,不需要单独写声明。如果定义写在调用(main)后面,前面必须加声明,否则编译报错// 先声明int main()return 0;int add(int a, int b) // 后定义。
2026-10-25 02:13:42
10
原创 函数的定义
在函数调用过程中,形参和实参是两个容易混淆的概念,下面结合上面的加法函数示例进行说明。除了直接调用库函数strlen,我们也可以自己动手实现一个功能相同的函数,从而更深入地理解字符串长度的计算原理。下面给出一个自定义的my_strlenint i = 0;for (i = 0;i < sz;i++) // 循环 sz 次break;count++;在上面的代码中,字符串"abcdef"这里需要注意,
2026-10-21 00:08:03
142
原创 数组的学习
1、数组中存放的是一个或者多个数据,但数组元素个数不能为02、数组中存放的多个数据,类型是相同的数组分为一维数组和多维数组,多维数组一般比较多见的是二维数组。
2026-01-11 22:36:02
486
原创 分支和循环的一些较为基本的运用
游戏要求:1、电脑自动生成1~100的随机数2、玩家猜数字,猜数字的过程中,根据猜测数据的大小给出打了或小了的反馈,知道猜对,游戏结束。
2026-01-06 21:52:40
365
原创 scanf和printf函数
是C语言中用于读取的函数:必须传递变量的地址(使用运算符),否则会导致未定义行为。字符串(字符数组)是例外,因为数组名本身就是地址以下是一个基本的运用要按下回车键才能够执行程序()的返回值是一个整数,表示成功读取的变量的个数其中scanf希望能有一个接受值如下:scanf在输入时是不会考虑数组所能容纳的量,例如:当超过了这个规定的范围后会报故障此时可以给scanf规定输入限制,则能够避免上面的故障,如下:赋值忽略符(
2025-12-21 23:42:47
529
2
原创 一些补充的C语言知识
f:小数(包含float和double类型)float:%f double:%lf。"%.3f"表示保留浮点数后三位,若想保留想保留的位数遵从"%.xf""%.5s\n"表示限定所输入的字符个数,以下的对比供大家参考。算数操作符(运算符):+、-、*、/、%,此项运算又称为两数之间的模,会保留余数。%d:十进制整数(有符号的十进制整数)的,其中注意,此项运算只会保留整数。不初始化时,它的值会默认为。后置--:先使用,在-1。前置--:先-1,在使用。
2025-12-20 00:02:57
513
4
原创 C语言的数据类型和变量
1、整数型:特征为整型。2、小数型:特征为浮点型。3、字符型:特征为字符。4、布尔类型:用于条件判断、循环控制和逻辑运算。使用整数类型来描述整数,使用字符型来描述字符,使用浮点型来描述小数,用布尔类型来实现条件判断等运算。数据类型:1、内置类型:包括字符型、整形、浮点型、布尔类型2、自定义类型:包括数组、结构体(struct)、枚举(enum)、联合体(union)整形有:short int(int 可省略)、int、long int(可省略)、long long int(可省略)
2025-12-18 22:36:49
795
7
原创 【初次学习C语言:常见概念的学习】
人与人交流时使用的是自然语言,如汉语、英语等都被称为自然语言,人通过下达指令给让计算机工作的语言被称之为计算机语言。顾名思义就是与计算机进行“沟通”的语言。
2025-12-05 00:04:29
680
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅