- 博客(11)
- 收藏
- 关注
原创 二分法查找有序数组中的某个数字
其实二分法很简单,我们每个人都会,大家可以想象自己查字典的方法,是不是先翻开靠近中间的一页,看看是哪个字母,然后与自己所要找的字母进行比较,以此类推最后找到自己要查的字。但是这种方法没有利用到有序数组的特点,有一种更好的方法,就是二分法。
2025-01-11 23:22:40
167
原创 进制的转换
例如,二进制数 11010110,可分为 1101 和 0110,1101 对应十六进制 D,0110 对应十六进制 6,所以转换为十六进制是 D6。方法是除 16 取余法,将十进制数不断除以 16,取余数,直到商为 0,然后将余数用十六进制符号表示,从下往上排列就是十六进制数。例如,十六进制数 3B,3 对应二进制 0011,B 对应二进制 1011,所以转换为二进制是 00111011。方法是除 2 取余法,将十进制数不断除以 2,取余数,直到商为 0,然后将余数从下往上排列就是二进制数。
2024-11-26 11:22:56
402
原创 字符串函数-strncpy,strncat,strncmp
这个函数与strcpy和strncpy的区别也一样,也是有三个参数,可以确定追加字符串长度,在末尾会补一个‘\0’。(只补充一个,不会补充多个)这个函数相比于strcpy的区别就是可以确定拷贝字符串的长度,这个函数比syrcpy多了一个参数,第三个参数就是拷贝字符串的长度。和上面一样,这个函数也有三个参数,表示就是比较几个字符。arr1为abcdef,arr2为abc,第三个参数为3,此时返回值为零。如果第三个参数大于被拷贝的字符串的长度,会步‘\0’。但在写代码时还是要尽量避免这种写法。
2024-11-26 10:42:08
620
原创 字符串函数-strcmp
关于strcmp这个函数就介绍完了,接下来还想说一些题外话:在写代码时需要注意赋值是一个等号,判断相等时是==,这个非常重要,如果少了一个=,往往会导致表达式默认为真,这会导致很严重的后果,这里我有一个小方法,例子:就是把0这类的值写在==前面 strcmp()写在==后面,这样写的话,只写一个=就会报错,会在一定程度上避免程序的bug。当ret==0时,表示字符串相等,同样的,还有>,<的情况。这个函数在比较字符串是否相等时,是从第一个开始逐一比较ascll值,需要注意的是‘/0’也会参与比较。
2024-11-21 13:43:13
685
1
原创 字符串追加—strcat
为了防止写的程序出现bug,必须时刻注意这几个点。1.arr1的空间必须足够大,防止越界访问!2.注意"\0",追加到"\0"停下来!3.目标空间必须可修改!
2024-11-19 15:26:05
438
2
原创 模拟实现-strcpy
接下来讲解一下这段代码:函数两个参数均为指针,这没什么好说的,使用assert断言,防止空指针的出现,*src是一个判断条件,当遇到"\0"时跳出循环,*dest = *src;这一句用于"\0"的拷贝。由于在程序的执行过程中,dest指向的已经不是字符串的首地址,所以定义了一个指针变量ret,用于存放字符串的首地址。这篇文章我们来讲一下模拟实现strcpy,作为对介绍strcpy函数使用方法这一篇文章的补充。程序还可以做出上述的优化,当"\0"被拷贝时,条件为假,跳出循环。
2024-11-19 14:35:23
176
1
原创 字符串函数-strcpy
这也是一种典型的错误为写法,没有为字符串arr添加字符串零终止符,不知道什么时候遇到"\0",这种写法是不安全的,会导致产生bug。所以在使用这个函数时,要保证原数据中有"\0"。这也是一种错误的写法,会导致越界访问,导致别的数据内存空间被覆盖,这是一种危险的写法,会导致程序崩溃。为了避免写程序时出现错误,要保证源字符串必须以"\0"结束,目标空间必须足够大,以确保能存放源字符串。目标空间放在前面,源头放在后面。上面这种写法是错误的,name数组名是地址,地址是一个常量值,所以不能直接赋值。
2024-11-19 13:49:06
557
1
原创 模拟实现strlen
这里函数参数依然是一个指针,str指向字符串首地址,在这段断码中就是A,通过while循环遍历整个字符串,那么end这个指针变量指向d,这两个指针变量相减就得到了字符串长度。(指针变量实际就是地址)这种方法就是函数的递归调用,由于本人水平有限,在这里可能给大家解释不明白,以后会补上这部分的内容。还是希望大家积极批评指正,让我的下一篇博客写的更好。
2024-11-19 11:26:42
179
原创 字符串函数-strlen
传给这个函数的参数是一个字符串,是一个字符串的首地址,所以函数的参数是一个指针。如果这样写代码,假设arr1的长度为3,arr2的长度为6,这样这段程序就会存在bug,他的值应该为-3,但由于返回值是一个无符号整形,所以这个数实际会是一个很大的正数,在写代码时,要避免这样的错误。在这个函数内部,是通过一个while循环,在遇到”\0”时才会跳出循环。定义了一个无符号整形变量len,通过指针遍历字符串,只要不遇到”\0”,len每次加一,函数的返回值为len,即为字符串长度。
2024-11-19 11:08:41
312
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅