<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[study_24_4_3的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/study_24_4_3</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; study_24_4_3]]></copyright><item><title><![CDATA[深入了解指针（2）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/156770973</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/156770973</guid><author>study_24_4_3</author><pubDate>Sun, 11 Jan 2026 17:13:26 +0800</pubDate><description><![CDATA[本文深入探讨了C语言中指针与数组的关系。首先解释了数组名本质上是数组首元素地址，但有两个例外：sizeof(数组名)和&amp;数组名。接着展示了如何用指针访问数组元素，并分析了一维数组传参的本质是传递首元素地址。文章还介绍了冒泡排序的实现、二级指针的概念，以及指针数组如何模拟二维数组。通过这些内容，读者可以更深入地理解指针在数组操作中的应用原理和技巧。]]></description><category></category></item><item><title><![CDATA[深入了解指针（1）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/149248532</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/149248532</guid><author>study_24_4_3</author><pubDate>Thu, 08 Jan 2026 23:10:00 +0800</pubDate><description><![CDATA[本文深入讲解了C语言中指针的核心概念和应用。首先通过宿舍编号的类比，解释了内存编址的基本原理，说明指针本质是内存地址的别名。接着详细介绍了指针变量的定义、解引用操作、指针运算等内容，并分析了32位和64位系统下指针大小的差异。文章还重点讨论了const修饰指针的不同效果、野指针的成因及规避方法、assert断言的使用场景。最后通过strlen模拟实现和swap函数示例，对比了传值调用和传址调用的区别，强调指针在函数参数传递中的重要作用。全文系统地阐述了指针的核心知识点，为深入理解C语言内存管理机制提供了扎实]]></description><category></category></item><item><title><![CDATA[操作符详解（下）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/149137158</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/149137158</guid><author>study_24_4_3</author><pubDate>Thu, 10 Jul 2025 13:51:07 +0800</pubDate><description><![CDATA[/学生类型struct Student //自定义//成员变量int age;}s4,s5,s6;//全局变量//全局变量int main()int a;struct	Student s1 = {"翠花",20,98.0};//初始化struct	Student s2 = {“旺财”,18,68.9};//局部变量return 0;即使有了操作符的优先级和结合性。]]></description><category></category></item><item><title><![CDATA[操作符详解（上）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/148870508</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/148870508</guid><author>study_24_4_3</author><pubDate>Sat, 05 Jul 2025 15:07:55 +0800</pubDate><description><![CDATA[上述的操作符，我们已经讲过算术操作符，赋值操作符，逻辑操作符，条件操作符和部分的单目操作符，今天继续介绍一部分，操作符中有一些操作符和二进制有关系，我们先铺垫一下二进制的和进制转换的知识。]]></description><category></category></item><item><title><![CDATA[深入浅出学会函数（下）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147477534</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147477534</guid><author>study_24_4_3</author><pubDate>Thu, 24 Apr 2025 23:43:45 +0800</pubDate><description><![CDATA[一般我们在使用函数的时候，直接将函数写出来就使用了。比如：我们写一个函数判断是否为闰年int is_leap_year(int y) //函数的定义return 1;if (is_leap_year(y) == 1) //函数的调用printf("%d是闰年", y);elseprintf("%d不是闰年", y);return 0;上面代码中前7行的部分是函数的定义，第13行时函数的调用。]]></description><category></category></item><item><title><![CDATA[深入浅出学会函数（上）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147473772</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147473772</guid><author>study_24_4_3</author><pubDate>Thu, 24 Apr 2025 14:10:16 +0800</pubDate><description><![CDATA[了解了库函数，我们的关注度应该聚焦到自定义函数上，自定义函数其实更加重要，也能给程序员写代码更多的创造性。]]></description><category></category></item><item><title><![CDATA[二维数组的用法]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147403222</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147403222</guid><author>study_24_4_3</author><pubDate>Mon, 21 Apr 2025 21:59:06 +0800</pubDate><description><![CDATA[你会1，2，3，4...这样猜吗？其实我们只要能够按照一定的规律产生所有的行和列的数字就行，以上一段代码中的arr数组为例，行的选择范围是0~2，列的取值范围是0~4，所以我们可以借助循环实现生成所有的下标。从输出的结果来看，每一行内部的每个元素都是相邻的，地址之间差4个字节，跨行位置处的两个元素（如：arr[0][4]和arr[1][0]）之间也是差4个字节，所以。图中最左侧的数字表示行号，最上面的数字表示列号，都是从0开始的，比如，我们说：第2行，第4列，快速就能定位出7。那二维数组如何初始化呢？]]></description><category></category></item><item><title><![CDATA[一维数组的用法]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147307149</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147307149</guid><author>study_24_4_3</author><pubDate>Thu, 17 Apr 2025 20:58:23 +0800</pubDate><description><![CDATA[从输出的结果我们分析，数组随着下标的增长，地址是由小到大变化的，并且我们发现每两个相邻的元素之间相差4（因为一个整型是4个字节），所以我们得出结论：数组在内存中是连续存放的。我们又知道数组中的所有元素的类型都是相同的，那只要计算出一个元素所占字节的个数，数组的元素个数就能算出来。以后再代码中需要数组元素个数的地方就不用固定写死了，使用上面的计算，不管数组怎么变化，计算出的大小也随着变化了。有了前面的知识，我们其实使用数组基本没有什么障碍了，如果我们要深入了解数组，我们最好能了解一下数组在内存中的存储。]]></description><category></category></item><item><title><![CDATA[深入浅出学会猜数字小游戏]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147296483</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147296483</guid><author>study_24_4_3</author><pubDate>Thu, 17 Apr 2025 15:12:39 +0800</pubDate><description><![CDATA[time函数会返回当前的日历时间，其实返回的是1970年1月1日0分0秒到现在程序运行时间之间的差值，单位是秒，返回的类型是time_t类型的，time_t类型本质上其实就是32位或者64位的整型类型。如果我们再深入的了解一下，我们就不难发现，其实rand函数生成的随机数是伪随机的，伪随机数不是真正的随机数，是通过某种算法生成的随机数，真正的随机数是无法预测下一个值是多少的。我们可以看到虽然一次运行中产生的5个数字是相对随机的，但是经过多次运行，发现下一次运行程序生成的结果和上次一模一样，这就说明有问题。]]></description><category></category></item><item><title><![CDATA[深入浅出学会函数递归（详细版）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147266369</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147266369</guid><author>study_24_4_3</author><pubDate>Wed, 16 Apr 2025 12:19:10 +0800</pubDate><description><![CDATA[这里我们看到了，在计算第40个斐波那契数的时候，使用递归方式，第3个斐波那契数就被重复了39088169次，这些计算是非常冗余的，所以斐波那契数的计算，使用递归是非常不明智的，我们就得想迭代的方式解决。函数不返回，函数对应的栈帧的空间就一直占用，所以如果函数调用中存在递归调用的话，每一次递归函数调用都会开辟属于自己的栈帧空间，直到函数递归不再继续，开始回归，才会逐层释放栈帧空间。其实递归程序会不断的展开，在展开的过程，我们很容易就能发现，在递归的过程中会有重复计算，而且递归层次越深，冗余计算就会越多。]]></description><category></category></item><item><title><![CDATA[关机程序（整蛊小程序）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147163502</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147163502</guid><author>study_24_4_3</author><pubDate>Sat, 12 Apr 2025 13:19:01 +0800</pubDate><description><![CDATA[今天跟大家分享一个有意思的代码1.程序运行起来的时候，就开始倒计时60s关机2.但是如果你能输入：我是猪，则取消关机。]]></description><category></category></item><item><title><![CDATA[goto语句的用法]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147162320</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147162320</guid><author>study_24_4_3</author><pubDate>Sat, 12 Apr 2025 11:43:21 +0800</pubDate><description><![CDATA[goto语句如果使用的不当，就会导致在函数内部随意乱跳转，打乱程序的执行流程，所以我们的建议是能不用尽量不去使用；但是goto语句也不是一无是处，在多层循环的代码中，如果想要快速跳出，使用goto语句就非常的方便了。本来for循环想提前退出得使用break，一个break只能跳出一层for循环，如果3层循环嵌套就得使用3个break才能跳出循环，所以在这种情况下我们使用goto语句就会更加快捷。]]></description><category></category></item><item><title><![CDATA[循环的嵌套]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/147046236</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/147046236</guid><author>study_24_4_3</author><pubDate>Mon, 07 Apr 2025 16:55:35 +0800</pubDate><description><![CDATA[前面学习了三种循环 while，do while，for，这三种循环往往嵌套在一起才能更好的解决问题，就是我们所说的：循环嵌套，这里我们就看一个例子。]]></description><category></category></item><item><title><![CDATA[break和continue语句]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/146980100</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/146980100</guid><author>study_24_4_3</author><pubDate>Thu, 03 Apr 2025 14:49:51 +0800</pubDate><description><![CDATA[在循环执行的过程中，如果某些状况发生的时候，需要提前终止循环，这是非常常见的现象。在C语言中提供了break和continue两个关键字，就是应用到循环中的。break的作用是：用于永久的终止循环，只要break被执行，直接就会跳出循环，继续往后执行。continue的作用是：跳过本次循环中continue后面的代码，在for循环和while循环中有所差异的。]]></description><category></category></item><item><title><![CDATA[do-while循环（包含例题）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/146979099</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/146979099</guid><author>study_24_4_3</author><pubDate>Thu, 03 Apr 2025 14:14:29 +0800</pubDate><description><![CDATA[while和for这两种循环都是先判断，条件如果满足就进入循环，执行循环语句，执行循环语句，如果不满足就跳出循环；而do while循环则是先进入循环体，执行循环语句，然后再执行while后的判断表达式，表达式为真，就会进行下一次，表达式为假，则不再继续循环。在do while循环中先执行图上的“语句”，执行完语句，再去执行“判断表达式”，判断表达式的结果！这里并非必须使用do while语句，但是这个代码比较适合使用 do while循环，因为n即使为0，也是1位数，要统计位数的。]]></description><category></category></item><item><title><![CDATA[for循环语句的用法（包含例题）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/146964936</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/146964936</guid><author>study_24_4_3</author><pubDate>Wed, 02 Apr 2025 22:01:32 +0800</pubDate><description><![CDATA[首先执行表达式1 初始化循环变量，接下来就是执行表达式2的判断部分，表达式2 的结果如果==0，则循环结束；=0则执行循环语句，循环语句执行完后，再去执行表达式3 ，调整循环变量，然后再去表达式2 的地方执行判断，表达式2 的结果是否为0，决定循环是否继续。for和while在实现循环的过程中都有初始化，判断，调整这三个部分，但是for循环的三个部分非常集中，便于代码的维护，而如果代码较多的时候while循环的三个部分就比较分散，所以从形式上for循环要更优一些。计算1~100之间3的倍数的数字之和。]]></description><category></category></item><item><title><![CDATA[while语句的用法（包含例题）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/146947581</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/146947581</guid><author>study_24_4_3</author><pubDate>Wed, 02 Apr 2025 21:17:33 +0800</pubDate><description><![CDATA[首先上来就是执行判断表达式，表达式的值为0，循环直接结束；表达式的值不为0，则执行循环语句，语句执行完后再继续判断，是否进行下一次判断。]]></description><category></category></item><item><title><![CDATA[if语句的用法（包含例题）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/146773937</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/146773937</guid><author>study_24_4_3</author><pubDate>Sun, 30 Mar 2025 21:02:18 +0800</pubDate><description><![CDATA[如果任意一个整数，我们要清楚的判断是奇数还是偶数怎么表示呢?默认情况下，if和else的后面只能跟一条语句，如果要跟多条语句，可以使用大括号。如果有多个if和else，可以记住这样一条规则，else总是跟最接近的if匹配。也就是表达式的结果如果为0，则语句不执行，表达式的结果如果不为0，则语句执行。很多初学者，上来一判断a是0，不等于1，那就执行else子句，打印haha。表达式成立（为真），则语句执行，表达式不成立（为假），则语句不执行。：输入一个整数，判断是否为奇数，如果是奇数打印奇数，否则打印偶数。]]></description><category></category></item><item><title><![CDATA[Switch语句的用法（包含例题）]]></title><link>https://blog.youkuaiyun.com/study_24_4_3/article/details/146770354</link><guid>https://blog.youkuaiyun.com/study_24_4_3/article/details/146770354</guid><author>study_24_4_3</author><pubDate>Sun, 30 Mar 2025 19:12:53 +0800</pubDate><description><![CDATA[Switch语句其实是一种特殊的if else结构，适用于判断条件存在多个结果的情况。它把多重else if改为更清晰 可读性更好的形式。]]></description><category></category></item></channel></rss>