- 博客(23)
- 收藏
- 关注
原创 C 语言第十二讲:深入理解指针(2)
就是为了不能被修改,如果 p 拿到 n 的地址就能修改 n,这样就打破了 const 的限制,这是不合理的,所以应该让 p 拿到 n 的地址也不能修改 n,那接下来怎么做呢?上述代码中 n 是不能被修改的,其实 n 本质是变量,只不过被 const 修饰后,在语法上加了限制,只要我们在代码中对 n 就行修改,就不符合语法规则,就报错,致使没法直接修改 n。但是指针变量本身的内容可变。const 如果放在 * 的右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。
2026-01-14 11:25:31
714
原创 C语言第十一讲: 深入理解指针(1)
前面的内容我们了解到,32 位机器假设有 32 根地址总线,每根地址线出来的电信号转换成数字信号后是 1 或者 0,那我们把 32 根地址线产生的 2 进制序列当做一个地址,那么一个地址就是 32 个 bit 位,需要 4 个字节才能存储。我们知道计算机上 CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是 8GB/16GB/32GB 等,那这些内存空间如何高效的管理呢?所以*pa = 0,这个操作符是把 a 改成了 0.
2026-01-08 22:48:59
1026
原创 C语言 第十讲:操作符详解
/ 代码1:结构体的定义与变量声明2 struct Point // 定义名为Point的结构体(用于表示“坐标点”,包含x、y两个整型成员)3 {4 int x;// 结构体Point的成员:表示x坐标(整型)5 int y;// 结构体Point的成员:表示y坐标(整型)6 }p1;// 声明结构体类型的同时,直接定义该类型的变量p1// 这里的“p1”是struct Point类型的变量// 先声明struct Point类型,再单独定义该类型的变量p2。
2026-01-07 22:47:22
774
原创 C 语言 第九讲:函数递归
青蛙跳台阶问题的核心是递推公式(初始值 f (1)=1、f (2)=2);递归版代码简洁易理解,但存在大量重复计算,仅适合小数值场景;迭代版通过循环逐步计算,无冗余开销,是工程上的最优选择汉诺塔的核心是递归拆解:把n个盘子的问题拆解为n-1个盘子的子问题,直到规模缩小到 1(终止条件);递归函数的关键是明确源柱、目标柱、中转柱的角色转换(每一层递归中,三个柱子的角色会变化);汉诺塔的最少移动步数固定为2^n - 1,n 越大,步数呈指数级增长(比如 n=10 时需要 1023 步)。
2025-12-25 21:29:04
1142
原创 C 语言 第八讲:VS实用调试技巧
bug本意是”昆虫”或”虫子”,现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题,简称程序漏 洞。"Bug”的创始人格蕾丝·赫柏(GraceMurrayHopper),她是一位为美国海军工作的电脑专家,1947年9月9日,格 蕾丝·赫柏对HarvardMarkII设置好17000个继电器进行编程后,技术人员正在进行整机运行时,它突然停止了工 作。于是他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受 光和热的吸引,飞到了触点上,然后被高电压击死。
2025-12-24 22:12:48
694
原创 C语言 第五讲:数组
有一个比较迷惑的点,变长数 组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根据变量的大小来指定数组的元素个数,而 不是说数组的大小是可变的。前面学习的数组被称为一维数组,数组的元素都是内置类型的,如果我们把一维数组做为数组的元素,这时候就是 二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以上的数组统称为多维数组。我们又知道数组中所有元素的类型都是相同的,那只要计算出一个元素所占字节的个数,数组的元素个数就能算出 来。在创建变量或者数组的时候,给定一些初始值,被称为初始化。
2025-09-06 15:24:13
2223
原创 C:一维数组
]中的常量值是用来指定数组的大小的,这个数组的大小是根据实际的需求指定就行。以后在代码中需要数组元素个数的地方就不用固定写死了,使用上面的计算,不管数组怎么变化,计算出的大小也 就随着变化了。有了前面的知识,我们其实使用数组基本没有什么障碍了,如果我们要深入了解数组,我们最好能了解一下数组在 内存中的存储。我们又知道数组中所有元素的类型都是相同的,那只要计算出一个元素所占字节的个数,数组的元素个数就能算出 来。存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。
2025-09-06 15:01:46
599
原创 C语言 第四讲:分支与循环(下)
掌握了前面学习的这些知识,我们就可以写一些稍微有趣的代码了,比如:写一个猜数字游戏游戏要求:1:电脑随机生成1~100的随机数2.玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或者小了的反馈,直到猜对,游戏结束3.玩完一把不过瘾,还可以继续玩,不需要退出程序。
2025-09-04 19:46:50
1180
原创 猜数字游戏
2.玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或者小了的反馈,直到猜对,游戏结束。3.玩完一把不过瘾,还可以继续玩,不需要退出程序。1:电脑随机生成1~100的随机数。
2025-09-04 19:40:29
206
原创 C语言 第三讲:分支和循环(上)
要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4 要想去掉n的最低位,找出倒数第二位,则使用n=n/1e操作就可以去掉最低位的,如:n=1234/10得到123, 123相较于1234就去掉了最低位,123%10就得到倒数第二位3。这是因为,我们先拿18和age中存放的10比较,表达式18<=10为假,18<=age的结果是0,再拿0和36比较, 0<=36为真,所以打印了青年,所以即使当age是10的时候,也能打印青年,逻辑上是有问题,这个代码应该怎 么写呢?
2025-09-03 20:06:31
1194
原创 C语言:利用goto语句实现“趣味小游戏”
本来for循环想提前退出得使用break,一个break只能跳出一层for循环,如果3层循环嵌套就得使用3个break才能跳出循环,所以在这种情况下我们使用goto语句就会更加的快捷。C语言提供了一种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。goto语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是goto语句也不是一无是处,在多层循环的代码中,如果想快速跳出,使用goto就非常的方便了。
2025-09-03 18:53:45
312
原创 C语言 第二讲:C语言数据类型和变量
C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。所谓”类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。下面盘点一下C语言提供的各种数据类型,本章节主要探讨内置数据类型。printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本 的格式。上面命令会在屏幕上输出一行文字”HelloWorld”。
2025-08-18 23:12:04
1439
原创 scanf函数
int main()printf("请输入成绩;");//输入一个整数,到score变量中//&取地址操作符 &score 取出score变量的地址printf("成绩是: %d\n", score);return 0;details.C4996 警告:此函数或变量可能不安全。建议使用 scanfs 代替。若要禁用此警告,请使用有关详细信息,请参阅在线帮助。出现错误的原因我们输入的函数是不安全的。例如在通常使用“scanf”时,我们并没有对将要放入的数据所占用的空。
2025-08-18 16:23:48
1136
原创 printf函数
上面示例中,输出文本says it is %d o' c1ock有两个占位符,第一个是字符串占位符%s,第二个是整数 占位符%d,分别对应printf()的第二个参数(1isi)和第三个参数(21)。如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的%的后面插入一个号。上面示例中,%s表示代入的是一个字符串,所以printf()的第二个参数就必须是字符串,这个例子是 zhangsan。如果只想输出开头的部分,可以用%.[m]s指定输出的长度,其中 [m]代表一个数字,表示所要输出的长度。
2025-08-17 23:03:16
1131
2
原创 C语言中:布尔类型
C语言原来并没有为布尔值单独设置一个类型,而是使用整数表示假,非零值表示真。在C99中也引入了布尔类型,是专门表示真假的。布尔类型的使用得包含头文件<stdbool.h>布尔类型变量的取值是:true或者false。
2025-08-17 22:54:08
415
原创 C语言练习题②
A .注释是用来解释代码的,在代码中是适当的加上注释有利于代码的阅读和多人协作。D .当全局变量和局部变量名字相同的情况,且都可以使用的时候,局部变量优先。D .注释有C++注释风格,有C语言注释风格,推荐C++注释风格。D .负数求模的规则是,结果的正负号由第一个运算数的正负号决定。C .局部变量是放在内存的静态区的,全局变量是放在内存的栈区。C .注释是给程序员看的,编译器在预处理阶段就会删除注释的。C .%操作符计算的结果是两个操作数整除之后的商。B .%操作符的操作数可以是整数,也可以是小数。
2025-08-16 22:29:24
375
原创 C语言练习题①
B .库函数是C语言标准约定的,由各个C语言编译器的厂商实现的,所以各个编译器的库函数使用和功能是一样的,但是内部实现是有差异的。A .小写字母的ASCII码值+32就能得到对应的大写字母的ASCII码值。D .main函数的名字是固定的,一个工程中,有且仅有一个main函数。C .printf函数是用来在标准输出上打印格式化的信息的。C .main函数的名字是可以随便改的,比如:mian。C .C语言中源文件的后缀是.c,头文件的后缀是.h。C .数字字符0~9的ASCII码值是连续递增的。
2025-08-16 22:07:55
669
原创 C语言的数据类型
总结:char:8bit:2^8-1....因此出现这么多的字符类型就是让我们可以按照不同情况选择合适的数据类型强调一个数是单精度的数可以在后面加上fC语言标准规定因此4,8都符合long的字节。
2025-08-15 23:04:12
374
原创 C4996 警告:此函数或变量可能不安全。建议使用 scanfs 代替。若要禁用此警告,请使用_CRT_SECURE_No_WARNINGS`
在头文件前面写下:#define _CRT_SECURE_NO_WARNINGS。
2025-08-15 22:49:08
301
原创 你好C语言
《C语言学习笔记:一位计算机新生的成长计划》摘要:本文作者是一名计算机专业学生,计划系统学习C语言并记录学习历程。学习方法包括观看教学视频、课后练习、整理笔记并分享至优快云平台,同时主动寻找优质题目独立完成分析。作者表示作为入门新手,期待读者包容文章质量并提出建议。该计划展现了结构化学习路径与知识分享的积极态度。
2025-08-14 17:13:42
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅