笔记
张嘴C语言
每天都笑嘻嘻
展开
-
C语言动态内存管理
上面我们声明并定义了一个大小为4字节的整型变量,一个容量为10*4字节的整型数组。开辟方式:我们在栈上开辟。开辟空间的方式有两个特点:1.空间开辟大小是固定的。2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道, 那数组的编译时开辟空间的方式就不能满足了。有的老铁会说,数组的话,怎么会不够?一开始指定数组长度就为100,甚至更大不就行了。原创 2023-10-21 07:30:00 · 165 阅读 · 0 评论 -
C语言实现strstr函数
strstr()函数在库函数String.h中,作用是找到目的串中和源字符串匹配成功时的首地址。例:在串abcde中找cd,找到位置是在第二个字符(下标为0~4)开始的。返回下标为2的地址。至于为什么会打印cde,是因为%s,它会打印字符串,直到遇到\0结束。原创 2023-10-17 15:00:00 · 193 阅读 · 0 评论 -
函数指针和指向函数的指针数组
函数指针顾名思义,有函数声明的模样,外加指针。void *p可以接收任意类型的地址。原创 2023-10-17 10:42:41 · 50 阅读 · 0 评论 -
VS2019调试技巧
它包含调试信息,并且不作任何优化,便于程序员调试程序。原创 2023-10-09 12:55:28 · 145 阅读 · 0 评论 -
结构体学习
我们用C语言中通常都是用关键字来定义类型变量。例如我们的整型变量,int book;是用整型关键字定义出来的。同样的,struct book同样是一个类型,不过我们叫他结构体。我认为的结构体的作用,无外乎是将一些毫无关系的变量整合到一起,来达到产生联系。整合到一起就是把它封装在结构体中。通过结构体,我们将姓名,年龄,性别这些本来毫不相关的变量,把它封装在结构体中,让别人更加清楚的描述一个物体。被封装在结构体中的变量可以是整型变量,数组,指针,结构体。struct是结构体关键字。原创 2023-10-23 08:00:00 · 319 阅读 · 0 评论 -
printf函数你真的了解吗?
printf()函数是输出函数,返回值是打印字符的个数。43是两个字符,返回值是2,此时变成printf("%d",printf("%d",2));继续执行printf()函数,屏幕会打印2,而2是一个字符,返回值就是1,此时printf("%d",1);屏幕显示432,继续执行printf()函数,屏幕显示4321。可以知道,一个汉字占2个字符。原创 2023-09-25 22:43:29 · 40 阅读 · 1 评论 -
给两个数,求这两个数的最大公约数
假设给定两个数30,20,30%20=10,20%10=0;所以此时两个数的最大公约数为10。利用辗转相除法,两个数求余数,直到余数为0。原创 2023-09-21 22:00:21 · 33 阅读 · 0 评论 -
C语言输入一个无符号正整数,输出该数每位加起来的和
我们知道,对一个整数除10求余数,得到的是最末尾那个数字,例如1234%10=4,而我们要等到1、2、3、4就要对1234取余四次。写成可能好理解一点。原创 2023-10-08 14:56:32 · 541 阅读 · 0 评论 -
将一个字符串逆序,用递归,不得用库函数
我先用自己的想法写出一个,就是控制数组下标交换内容。想了想还是这个要清晰一点。原创 2023-10-08 11:22:51 · 43 阅读 · 0 评论 -
C语言打印二进制数的奇数位和偶数位
再根据每一位之间间隔为2,这样我们就可以分离奇数位和偶数位。要打印每一位对应内容,我们可以通过&运算符,1&1==1;我们知道,二进制是从0~31一共32位。而奇数位是从0~30位开始,偶数位是从1~31开始。原创 2023-10-08 09:24:20 · 91 阅读 · 0 评论 -
C语言求两个数的二进制数有几位不相同
举个例子:16,12,这两个整数的二进制数分别为10000 01100,两个数异或得到11100。再将11100减1,为11011,再相与,11000,这样就会将异或中最右边的1慢慢消掉,直到temp==0,退出循环。我采用的是异或来求不同位,异或是相同为0不同为1。原创 2023-10-08 08:58:46 · 54 阅读 · 0 评论 -
C语言十进制数求对应二进制中1的个数
上面这种方法只能输入整数,对于浮点数,只能求其中的整数部分的1。上面的方法采用的是移位与1,从最右边开始移位,与1,如果数的第i位是1,与1与之后结果就是1,由count记录1的个数,总共移位32次。int类型是4个字节,所以是32位。原创 2023-10-07 10:46:09 · 345 阅读 · 0 评论 -
指针变量学习
C语言指出,一个变量的首地址称为该变量的指针。记作&x如 int *p;我们一般说p指向int类型。原创 2023-10-12 08:36:07 · 31 阅读 · 0 评论 -
C语言冒泡排序+数组传参问题
通过flag的变化,确定经过一趟排序之后,有没有交换,如果有,那么flag=0,下一趟还要进行。如果flag值为1,就说明已经是升序,没必要再排下去。这样会将效率提高一些。我们从输出结果来看,+1之后,增加四个字节。arr=&arr[0],但是&arr+1,增加了24个字节(数组长度*每个元素所占大小);总结:除了sizeof(arr)和&arr,数组名表示的是整个数组,其他情况都表示的是数组首元素地址。对于上面一个算法来说,如果一开始就是升序,那么它还是继续排完,效率很低。这里再说一下传参的问题。原创 2023-10-05 17:08:02 · 45 阅读 · 0 评论 -
如何理解二维数组?
如int arr[]={1,2,3,4};但是int arr[][]={1,2,3,4};就不行,必需确定大小。如arr[][4]={1,2,3,4};我们可以看到每个一维数组的首地址,都相隔16,arr[0][4]到arr[1][4]相隔16 , 一个int类型数据为4个字节,有四个,所以隔着16。不仅如此,我们看到brr[3][4],我们可以通过大括号,确实第几行第几列放的是什么。arr[3][4]这个数组给我们的感觉就是由编号0、1、2 为名,且长度为4的三个一维数组连续存放在一起。原创 2023-09-28 11:09:51 · 27 阅读 · 0 评论 -
用汇编语言编写从键盘上接受一个字符,显示它的前导字符和后继字符。
【代码】用汇编语言编写从键盘上接受一个字符,显示它的前导字符和后继字符。原创 2023-09-28 10:02:35 · 269 阅读 · 0 评论 -
用汇编语言编写从键盘上接受一个小写字母,将它变成对应大写字母并显示。
【代码】用汇编语言编写从键盘上接受一个小写字母,将它变成对应大写字母并显示。原创 2023-09-28 10:00:37 · 971 阅读 · 0 评论 -
C语言实现斐波那契函数
采用循环的方式计算速度会快很多。上面这种是采用递归的方式。原创 2023-09-27 19:23:54 · 266 阅读 · 0 评论 -
用递归方式实现n的阶乘
【代码】用递归方式实现n的阶乘。原创 2023-09-27 18:17:55 · 291 阅读 · 0 评论