- 博客(13)
- 收藏
- 关注
原创 指针(四)
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。void* 是无具体类型的指针,这种类型的指针不能直接解引用,也不能进行+-的整数运算。统计的是strlen函数的参数str中这个地址开始向后,\0之前的字符串中字符的个数。qsort——排序函数(库函数,可以直接用来排序数据,底层用的是快速排序的方式)如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。被用来调用其所指向的函数时,被调用的函数就是回调函数。
2024-03-04 21:30:47
659
1
原创 C语言——指针(三)
二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址。//将首字母的地址赋给p。该指针可以指向一个函数,指向的函数参数int,返回类型是void。的函数指针,该指针可以指向一个函数,指向的函数参数int,返回类型是void。二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址。函数指针应该是用来存放函数地址的,未来通过地址能够调用函数的。typedef是用来类型重命名的,可以将复杂的类型简单化。int,int是pf指向函数的参数类型和个数的交代。在上面的代码中变量p的类型是,
2024-02-28 15:36:33
803
原创 指针(二)
形参的部分可以写成指针的形式,也可以写成数组的形式,但本质上都是指针。a. sizeof(数组名),这里的数组名表示两个数组,计算的是整个数组的大小,单位是字节。int * *//*代表pp是指针变量;int*代表pp指向的对象是int*类型的。//二级指针变量,用来存放一级指针变量的地址。b. &数组名,这里的数组名也表示整个数组,取出的是整个数组的地址。冒泡排序的核心思想就是:两两相邻的元素进行比较。一堆数组传参的时候,传过去的是数组首元素的地址。数组名是数组首元素的地址。3.一堆数组传参的本质。
2024-02-27 13:45:38
265
1
原创 指针(一)
可以理解为无具体类型的指针(泛型指针),这种类型的指针可以用来接受任意类型的地址。传值调用:将实参的数据(而不是地址)传给了形参,在被调用的函数中,形参值改变了,但是不影响主调函数的实参值。const如果放在*的右边,修饰(限制)的是指针变量本身,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。传址调用:将实参变量的地址传给形参,(此时形参是指针,即让形参的指针指向实参地址)改变形参的同时也把实参改变了。野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
2024-02-27 13:44:49
825
1
原创 操作符详解(一)
原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。同理,二进制每4位一转换,并在最前方用0x表示。因为二进制1111=15(f),足以表示八进制中每一位的最大值f。的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位,剩余的都是数值位。按位与:对应二进制有0就是0,同时为1才为1。符号位都是用0表示"正”,用1表示"负”。2.2二进制转十六进制。
2024-02-20 21:52:59
345
原创 C语言中的数组
变长数组不能初始化,数组的大小可以使用变量来指定,并不是说数组的大小可变,数组的大小一旦确定就不能改变。数组的访问提供了一个操作符[ ],下标引用操作符,如arr[5]就是在数组arr中下标是5的元素。C99中给了一个变长数组的新特性,允许我们使用变量来指定数组大小(VS不支持C99中的变长数组)//%p是专门打印地址的占位符,特点用16进制的形式打印,同时最前面的0不会省略。行和列同样从0开始排序,若n行n列,则下标最大为[n-1][n-1]当不指定大小的时候,数组的大小等于初始化中的元素值。
2024-01-24 17:50:11
694
原创 分支与循环(二)
rand函数生成的函数叫伪随机数,不是真正的随机数,是通过某种算法生成的随机数,rand是针对一个叫“种子”的基准值运算生成的随机数。1.1rand()函数会生成一个随机数,随机数范围在0~RAND_MAX(32767),需要包含头文件<stdlib.h>time函数会返回time_t,本质是32或64位的整型类型,如果只让time返回时间戳,可以:time(null);(while中顺序:初始化→判断→执行语句)//调整语句在执行语句中,使用break/continue要注意语序。表达式1:初始化部分;
2024-01-23 17:39:05
1059
1
原创 分支与循环语句(一)
其实,在 switch 语句中case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。计算逻辑:如果表达式1为真,表达式2计算;value1:statement //case后的值必须是整型常量表达式,最后根据情况加。}//一直循环执行,直到表达式条件为假。a||b 只要a和b其中至少有一个为真,运算结果就为真;} //可以依然是if语句。a&&b只有a和b都为真,运算结果才为真;|| 左边为真,右边无需计算,整体为真。&& 左边为假,右边无需计算,整体为假。
2024-01-21 18:00:08
445
1
原创 printf()与scanf()
为防止这种情况,使用%s占位符时,应该指定读入字符串的最长长度,即写成%[m]s,[m]是一个整数,表示字符串最大长度。printf()的参数与占位数是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个,不然就匹配任意值。e.g. printf(“%5d\n”,123)//输出结果为”123 ”默认右对齐。++:自增操作符(+1),分为前置++(先加1,后使用)和后置++(先使用,后加1)--:自减操作符(-1),分为前置--(先减1,后使用)和后置--(先使用,后减1)
2024-01-21 13:57:27
531
1
原创 C语言数据类型和变量
同样长度的内存,表示的最大整数值增大了一倍(因为不用表示负数);如果要计算出小数,那么除号两端至少有一个数是浮点数(%f和%lf打印的时候小数点后默认打印后6位;signed,表示一个类型带有正负号,包含负值,一般情况下signed int可以省略signed。/*char是有符号的char还是无符号的char,取决于编译器,不能省略*/sizeof( )计算的结果,计算操作符类型长度,单位是字节。除法:如果除号的两端都是整数,执行的是整数除法(自动取商);既是关键字,又是操作符,要用%zd打印。
2024-01-17 17:51:35
504
原创 C语言常见概念
控制语句:[C语言是结构化的程序设计语言:顺序结构/选择结构/循环结构]三种结构的9种语句。e.g.: printf——stdio.h(标准输入输出)%lu/%llu——打印无符号长整型/长长整型。复合语句:成对大括号中的代码构成复合语句。/*这中间的也是注释*/ 无法嵌套。\t——制表符(通常是4/8的倍数)\a——报警字符(电脑报警)\ddd——一到三个八进制数。\xdd——2个十六进制数字。函数调用语句:函数调用后加;Ctrl+K+C整段变注释。表达式语句:表达式后加;Ctrl+K+U取消注释。
2024-01-17 17:50:01
350
原创 int main( )
我是一名大三的学生,其实是有一定的编程基础的,我所在的院校的教育技术系,也教了我们三年代码,但很可惜,都是python。第一年,它叫大学it,第二年,它叫数据结构,第三年,它叫数据可视化.好巧不巧,我的目标院校不需要python,她考C语言。教育技术学是利用信息技术优化与提升学习过程与学习资源的一门交叉学科,是信息时代环境下最具有生命力和发展潜力的学科。3. 最重要的,是全面学习整个C语言知识系统,以实践为核心驱动,提高自己的c语言水平,结合谭浩强老师的课本和练习册,进行针对考试内容的学习。
2024-01-16 21:15:38
359
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人