- 博客(35)
- 收藏
- 关注

原创 预处理详解
举例:#define MAX 1000思考:语句后面要不要加分号?如建议不要加上;,这样容易导致问题。⽐如下⾯的场景:max = MAX;如果是加了分号的情况,等替换后,if和else之间就是2条语句,⽽没有⼤括号的时候,if后边只能有⼀条语句。这⾥会出现语法错误。#define机制包括了⼀个规定,允许把参数替换到⽂本中,这种实现通常称为宏(macro)或定义宏申明方式:#define name( parament-list ) stuff。
2024-08-16 00:29:15
992

原创 动态内存分配函数&经典笔试题&柔性数组的概念
为什么要有动态内存分配?常见的动态内存的错误:动态内存经典笔试题分析柔性数组的特点结构中的柔性数组成员前⾯必须⾄少⼀个其他成员。• sizeof返回的这种结构⼤⼩不包括柔性数组的内存。• 包含柔性数组成员的结构⽤malloc()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤⼩,以适应柔性数组的预期⼤⼩。柔性数组在结构体中不需要初始化,因为它的大小是未知的。
2024-08-10 00:12:21
1342

原创 内存操作函数详解
用于在内存中复制数据块。函数原型定义在头文件中。其基本用法如下:这个函数的功能是从源(src)所指向的内存地址开始复制n个字节到目标(dest)所指向的内存地址。memcpy函数会返回目标内存区域的指针。以下是memcpydestsrcn字节使用memcpymemcpy不会检查源和目标内存区域是否有重叠memcpymemmovememcpy示例:// 使用 memcpy 复制字符串// 加 1 是为了复制字符串结尾的空字符return 0;
2024-08-06 15:46:37
1458

原创 字符函数和字符串函数,超详细!!!
在 C 语言中,字符分类函数通常用于判断字符是否属于某种特定的类型(如字母、数字、空白等)。这些函数通常在头文件中声明。
2024-07-31 01:57:40
795
原创 idea2024控制台无法输入中文
如果设置了utf-8还是没用,试试更新版本,我原来2024.2.1版本就是输入不了中文,试遍了方法,结果一更新版本就好了。
2024-12-11 14:27:45
774
原创 动态规划入门-(01),(多重)背包问题及优化
物品:有 n个物品,每个物品 i有一个重量 wi和一个价值 vi。背包:有一个最大承重 W。目标:选择一些物品放入背包,使得它们的总重量不超过 W,并且总价值最大。即在背包容量有限的情况下选择的最优解使得背包所能容纳的物品总价值最高。
2024-10-27 20:08:46
930
原创 正则表达式基本语法(快速认知)
abc]abc[a-z][A-Z][0-9]比如我们的电话号码是11个数字组成, 则可以表示为:"表示11个0到9之间的数字,String中有matches方法,可以用于匹配正则表达式,正确返回true;结果:true;\d[0-9]\D[^0-9]\w\W\s\S比如之前的电话号码也可简化为://第一个\表示转义字符随后跟一个\d电话号码这样写\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d会不会感觉很复杂,很多重复的数字,于是有了量词?{n}{n,}
2024-10-25 14:38:14
688
原创 2024秋面向对象程序设计pta-实验二
/ 加班费(双倍)double s = getPerimeter() / 2;// 始终返回40小时的工资。// Getter 和 Setter 方法。// 返回三角形的字符串描述。// 带参数的构造方法。// 带参数的构造方法。// 计算三角形的面积。// 计算三角形的周长。
2024-09-21 09:07:47
1488
原创 pta-2024年秋面向对象程序设计实验一-java
7-1 sdut-sel-2 汽车超速罚款(选择结构7-2 Java中二进制位运算7-3 sdut-最大公约数和最小公倍数7-4 判断回文7-5 字符串操作7-6 N个数的排序与查7-7 二进制的前导的零7-8 古时年龄称谓知多少?7-9 期末编程作业计分规则7-10 sdut-array2-3 二维方阵变变变7-11 直角三角形
2024-09-06 23:12:39
1508
2
原创 基于顺序表实现通讯录功能项目
本文通过顺序表实现通讯录的功能,增删查改数据首先实现顺序表的功能,再用顺序表实现通讯录的功能顺序表中的成员为一个结构体对象con,自定义的类型,里面包含着联系人的姓名性别年龄电话地址。
2024-08-27 13:28:38
837
原创 eclipse汉化教程
6. 等待安装,点击右下角可以查看安装进度,期间会弹出Trust。1:选择HELP->install New software。,然后点击Trust Selected。信任对话框,点击Select All。目标(T)后面加上-nl en。4:等待下载完成后点next。5:选择中文,再点击next。8:如果想改为英文,在。
2024-08-27 13:05:52
866
原创 顺序表的基本操作代码
if (ps->size == ps->capacity) {//如果当前数量达到容量。void headinsert(sl* ps,type c) {//头插法。void tailinsert(sl* ps,type c) {//尾插法。void initialize(sl* ps){//初始化顺序表。void taildelete(sl* ps){//尾删法。
2024-08-22 16:29:10
380
原创 汉诺塔问题详解及扩展(c++)
当然你也可以在函数move中增加一个变量记录移动的步数,但是, 这是递归,随着递归层次的不断增大,会导致栈溢出的问题,我在这里试了一下100个盘子,结果是运行了数十秒也得不到结果,一直在跑。f(n)=f(n-1)+1+f(n-1)//类似于a柱子上n个盘子的步数等于将n-1个盘子移动到c柱的步数,加上a上最后一个盘子移动到b这一步,再加上c柱子上n-1个盘子移动到b柱子上的步数。if (n == 1) {//如果移动的盘子数为1了,即最后移动的盘子了,就把a中最后剩下的一个盘子移动到c柱子上。
2024-08-17 17:43:12
3272
原创 c++set,map强化练习题
解:可以建立一个集合存储记过的单词;int n;cin >> n;i < n;int option;j++) {//先转换大小写//记下该单词;else {//如果是询问模式下//如果背过//没背过return 0;
2024-08-16 17:30:33
544
原创 结构体内存对齐
首先得掌握结构体的对齐规则:1.结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处.对齐数=编译器默认的一个对齐数 与 该成员变量大小的较小值.vs中默认的值为8-Lnux中 gce 没有默认对不敌,对齐数就是配同自量的大小3、结构体总大小为最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大的) 的整数倍.
2024-08-08 22:50:43
429
原创 数据类型范围
short:-2的15次方到2的15次方减一。int:-2的31次方到2的31次方-1;当数据过大越界,数据会轮转循环,类似于轮盘。char:-2的七次方到2的七次方减一;
2024-08-06 16:26:18
143
原创 百度面试题
test为4个字节,强制转换为char*取第一个字节,如果第一个字节是00则是大端,如果第一个字节是01则是小端;指数据的低位字节内容保存在内存的高地址处,数据的高位字节内容保存在内存的低地址处;简述一下什么是大小端字节序,并设计程序判断当前机器的字节序;-百度面试题-10分。指数据的低位字节内容保存在内存的低地址处,数据的高位字节内容保存在内存的高地址处。// 设置整数值为1。// 如果*p是1,那么系统是小端;内存地址 存储的数据。内存地址 存储的数据。假设一个16位的整数。
2024-08-06 16:11:54
279
原创 每日一题,指针,指针数组复合难题
/*++cpp为c+1再减一为c,再解引用指向指针数组变量ENTER,其存放的是ENTER字符串的首地址,再加三得到E的地址,打印得到ER;//即*(*(cpp-1)-1)+1,*(cpp-1)为c+2,减一得到c+1,再解引用得到NEW首元素地址,再加一得到E的地址,打印得到EW。//即**(cpp-2)+3,*++cpp为c+3,再解引用指向c+3的值,即FIRST的首元素地址,再加三指向S,打印得到ST。//*++cpp为c+2,再解引用指向c+2地址的值即PPOINT。以下代码的打印结果?
2024-07-29 10:28:53
173
原创 typedef的应用,陷阱,与#define的区别
1:首先void(*p)()认得到么?,这是一个名为p的指针,指向一个返回值为空,参数为空的函数。(* ( void (*) ( ) ) 0 ) ( )调用0处地址放的这个函数;这意思就是在地址0处放着一个指针变量,指向一个无参,返回类型为void的函数;答案:(* ( void (*) ( ) ) 0 ) ( );0将int类型的0强制类型转换为函数指针类型。2:去掉名称,void(*)()则是该。强制类型转换为函数指针类型。
2024-07-25 23:34:49
333
原创 每日一题(数组传参的雷点)
1:数组传参,实质上是传递首地址。即一个指针类型,形参访问数组和实参访问数组是同一个数组2:形参数组是不会单独再创建数组空间的,所以形参的数组是可以忽略掉数组大小的,即不管是PRINT(int arr[5])还是PRINT(int arr[10])或者是PRINT(int arr[])它们的本质是一样的,都等价与PRINT(int *arr)即一个首元素地址!
2024-07-23 00:00:00
323
原创 野指针与断言
assert断言在处理野指针时的主要作用是提供一种机制来验证指针的有效性。通过在关键点添加断言,开发者可以更早地捕捉到潜在的问题,从而提高程序的安全性和稳定性。然而,assert主要用于调试阶段,在生产环境中通常会被禁用,因此它不能替代正常的错误处理机制。在实际开发中,仍然需要谨慎处理指针的生命周期和内存管理。assert特点调试工具assert通常在调试模式下启用,而在发布模式下被禁用。这意味着在发布版本中,断言不会影响程序的性能。条件检查assert用于检查程序中的假设条件。
2024-07-22 12:50:25
764
原创 每日一题2
类型,每个数据为int,4个字节,所以指针p移动两次,才能修改数组中的一个数据为0;总共移动4次,所以只能修改两个数据。p+1每次移动的是两个字节。以下代码输出结果是什么?
2024-07-19 15:40:26
244
1
原创 每日一题,(错误率90%!)
因为sizeof的返回值为unsigned int类型,当int和unsigned int类型进行比较时,会发生整形提升,也就是说,int类型的-1会被自动转换为unsigned int类型。i为-1,sizeof (int)类型为4,-1小于4,所以打印B。,因为自动默认位正数了,所以其值为int类型的最大值,即2的31次方-1.当-1为unsigned int类型时,在内存中的补码。考点:整形提升,有兴趣的话可以查看我以前的文章。这个值肯定大于4,所以打印结果为A。当-1为int类型时在内存中的补码。
2024-07-19 14:54:12
401
原创 逻辑运算符的短路现象
在C语言中,逻辑与(&&)和逻辑或(||)运算符具有短路现象。短路现象指的是在使用逻辑与和逻辑或运算符时,当左侧表达式的值已经决定了整个表达式的结果时,右侧的表达式将不会被求值。具体来说:对于逻辑与(&&)运算符,如果左侧的表达式为假(0),则整个表达式的值必定为假此时右侧的表达式将不会被求值,因为无论右侧表达式的值是什么,整个表达式的值都不会改变。对于逻辑或(||)运算符,如果左侧的表达式为真(非0),则整个表达式的值必定为真,此时右侧的表达式将不会被求值。
2024-07-18 17:05:47
952
原创 隐式类型转换(整形提升)
整形提升是指在C语言中,当较小的整数类型(如charshort)参与表达式运算时,它们会被自动提升为较大的整数类型(如int或)的过程。整形提升是由C语言标准规定的隐式类型转换规则。当较小的整数类型参与表达式运算时,它们会被自动提升为较大的整数类型,以便进行一致的计算。这样做是为了避免在计算过程中出现意外的精度丢失或溢出。例如,当一个char类型的变量和一个int类型的变量进行运算时,char类型的变量会被提升为int类型,然后再进行运算。这种提升是隐式进行的,程序员无需手动指定。
2024-07-17 09:52:16
945
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人