- 博客(9)
- 收藏
- 关注
原创 C语言中的回调函数
当初学回调函数的时候在网上看的那些教程那是越看越懵啊,有的写的天花乱坠,有的为了炫技搞的花里胡哨,举的那些例子一个比一个长,一个比一个难以理解,完全不照顾初学者能不能搞懂,下面我来给大家解释一下啥是回调函数!所以回调函数实际上就是一种编程方式,让你可以把自己的代码插入到别人的代码中,以便在某些特定事件发生时被调用,这种方式使代码更加灵活,你不需要一直等待某个事件的发生,而是在需要的时候才会被“回调”执行。,这个函数的参数一般会有个函数指针,这个函数指针指向哪个函数,程序运行的时候这个函数函数就会被调用。
2024-11-05 21:30:51
410
原创 指针数组和数组指针
指针数组就是个数组,是一个存放指针的数组,数组指针就是个指针,是一个指向数组的指针。因为[]的优先级高于*,所以p1先和[]结合,说明p1是个数组,p1是个有10个元素的数组,每个元素的类型是int*,即p1是指针数组,存放指针的数组。因为(*)的优先级高于[],所以p2先和*结合,说明p2是个指针变量,指向一个大小为10个整型的数组,所以p2是个数组指针,指向数组的指针。综上,就看指针p先和[]结合还是先和*结合,p先和[]结合,就是指针数组,p先和*结合,就是数组指针。
2024-10-09 18:01:44
426
原创 C语言中野指针和空指针
指针实在不知道初始化为啥的时候,就让它等于NULL空指针,int*p2 =NULL就是0,相当于int a = 0;变量a是局部变量,出了作用域就销毁了,test函数的返回值&a返回到main函数中,a的空间就销毁了 ,再用*p=2;未来你想用指针p的时候最好加上if,如果p不是空指针,那就说明p里面放的是有意义的地址,那么该咋用就咋用。程序运行错误,当p指向元素10的地址时,此时指针指向范围超出了数组arr的范围,p就是野指针。: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。
2024-10-03 19:20:28
324
原创 C语言中指针解引用
指针变量p的类型为int*类型,那么p+0跳过0个整形0个字节,此时的指针p指向数组元素1的地址,*(p+0)=0解引用把元素1改成0,p+1跳过一个整形4个字节,此时的指针p指向数组元素2的地址,*(p+1)=0解引用把元素2改成0,p+2跳过两个整形8个字节,此时的指针p指向数组元素3的地址,*(p+2)=0解引用把元素3改成0,p+3跳过三个整形12个字节,此时的指针p指向数组元素4的地址,*(p+3)=0解引用把元素4改成0。上图,当把指针变量p的类型定义为int*类型的时候,程序输出结果为0。
2024-10-03 16:52:39
984
原创 C语言中前置++和后置++的区别
可以简单理解为你先遇到谁就先用谁,比如你先遇到++你就先++,先遇到变量你就先使用。++a 此时我先遇到++了,你就先++,再使用a的值。例如:a++ 此时我先遇到变量a了,你就先使用a的值,然后再让a++总之就是从左到右依次来,先遇到谁就先用谁!同理前置--和后置--也一样。前置++,先++,后使用。后置++,先使用,再++
2024-10-03 14:18:15
272
原创 static的用法
程序输出结果为2 3 4 5 6,代码二相比代码一的差别就是代码二的局部变量b用了static关键字修饰,用static修饰后的局部变量b的生命周期就会变长,也就是活的比较长了,局部变量b出了test函数范围也不会被销毁,它的作用域也会变大,可以简单理解为局部变量b活的和main函数一样长,main函数不死,b就不灭,直到程序结束,b的生命周期才结束。简单理解就是局部变量的生命周期很短,出了它的函数范围就死了,而全局变量的生命周期很长,能够在程序中活很久,和main函数一样活的比较长。
2024-10-02 20:11:58
5243
原创 continue的用法
程序运行结果为1 2 3 4,当i=5的时候,遇到了continue,continue会终止本次循环,后面的printf语句和i++语句就不执行了,而是直接跳转到while语句的判断部分,此时i=5,while一看i还是小于等于10,执行if语句i==5,然后又continue了……程序运行结果为1 2 3 4 6 7 8 9 10 没有5,因为当i=5的时候会遇到continue 后面的打印函数printf就不执行了,直接跳转到for的i++中去,继续打印输出6 7 8 9 10。
2024-10-02 17:55:30
761
原创 32位系统中的指针为什么占4个字节
我们知道指针就是地址,32位就有2^32种地址,其中每个地址就有32位,比如32位系统中的一个地址为1000 0000 0000 0000 0000 0000 0000 0000 这个地址有32位,32bit/8=4byte,你想用1个指针表示这32位的地址,那么该指针的大小必须就是4个字节,如果指针大小为2个字节,一共才2*8=16bit,该指针只能表示16位的地址,表示不了32位的地址,这也就是为啥32位操作系统的指针占4个字节,64位操作系统的指针占8个字节的原因。内存是怎么使用的呢?
2024-10-02 16:41:55
736
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人