- 博客(32)
- 收藏
- 关注
原创 C语言 之 自定义类型:结构体、结构体内存对齐、修改默认对齐参数 详细说明 可以来看看哟
这是不行的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的大小就会无穷的大,是不合理的。这个也是不行的,因为Node是对前面的匿名结构体类型的重命名产生的,但是在匿名结构体内部。2.匿名的结构体类型,如果没有对结构体类型重命名的话,基本上只能使用一次。1.编译器会把上面的两个声明当成完全不同的两个类型,所以是非法的。结构体变量的创建有以下几种方式,都是可以的。在声明结构的时候,可以不完全的声明。
2024-08-25 23:21:26
368
原创 C语言 之 浮点数在内存中的存储 详细讲解
常见的浮点数:3.14159、1E10(表示1*10^10)等浮点数家族包括: float、double、long double 类型。浮点数表示的范围在float.h 中有定义。
2024-08-25 21:37:48
899
原创 C语言 之 整数在内存中的存储、大小端字节序和字节序的判断
之所以要将i强转为char* 类型,就是因为char* 只能读取一个字节大小的空间,i在内存空间中,肯定是一端为0,一端为1,i的二进制的形式那就是最右端为1,即1为低位,当使用char*去读取这个i的内存空间时,访问的是低地址位置,若解引用得到的值是1,那就符合小端,反之则大端。其实高位和地位的区分就类似于我们的阿拉伯数字,例如数字123,3是个位,2是十位,1是百位,那么3就是低位,所以类似的,0x11223344中,44就是低位了。高位的⼀位是被当做符号位,剩余的都是数值位。⼤端(存储)模式:是指。
2024-08-23 20:03:40
838
原创 C语言 之 memcpy函数的内存重叠问题 及解决该问题的思路
这个函数能够在source指向的空间中拷贝num个字节的内容到destination指向的空间中,当source指向的空间内容与destination指向的空间内容重叠时,就会产生这个问题,达不到预期的结果。首先,我们看上面这个例子,我们要将arr1指向的内容拷贝到arr1+2指向的内容中,拷贝20个字节,由于该数组是int类型,所以20个字节是5个元素。内存重叠问题解决的主要思路就是根据source指针和destination的指针的前后位置要有不同的拷贝方式,像上面的这种情况就应该使用。
2024-08-23 18:16:36
602
原创 C语言 之 内存函数 memcpy、memmove函数的使用和模拟实现 memset、memcmp函数的使用
1.函数memcpy是从source的位置开始向后复制num个字节的数据到destinatio指向的内存位置。所以为了解决这个问题我们就根据这两个指针的位置的前后不同来进行不同的处理,加上了从后往前拷贝这个方法,就能解决这个问题了。memcpy是默认从前往后拷贝的,所以一旦位置出现问题,即dst和src两个指针的位置前后出现问题,就会造成影响。1.和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。为了解决内存重叠的问题,我们可以通过改变拷贝的方式来解决。
2024-08-22 23:41:19
1012
原创 C语言 之 字符相关函数和字符串相关函数的大合集 详细解析 快来看看吧!!
来记录程序的当前错误码,只不过程序启动的时候errno是0,表示没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在errno中,而⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。3.strtok函数找到str中的标记时,会将其用\0结尾,返回一个指向这个标记的指针(需要注意的是,strtok函数会改变被操作的字符串,所以在使用strtok函数切分字符串时一般使用的是临时拷贝的内容,并且内容可以被修改)
2024-08-18 20:10:33
1788
6
原创 C语言 之 strstr函数的使用和模拟、strtok函数的使用、strerror函数和perror函数的使用
strstr函数的使用和模拟、strtok函数的使用、strerror函数和perror函数的使用
2024-08-18 20:01:39
880
原创 C语言 之 字符串函数strncpy、ctrncat、strncmp函数的使用
⽐较str1和str2的前num个字符,如果相等就继续往后比较,最多比较num个字母,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。2.如果source 指向的字符串的长度小于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾。1.将source指向的字符串的前num个字符追加到destination指向的字符串末尾,之后再追加⼀个 \0 字符。2.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
2024-08-18 17:41:44
305
原创 C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现
本章的内容主要讲解strlen、strcpy、strcat、strcmp这4个字符串函数的使用和模拟实现
2024-08-17 22:53:06
691
原创 C语言 之 字符相关函数
本章内容主要讲的是c语言中的字符相关的一些函数的作用用法和使用为了方便我们对字符的各种操作,C语⾔标准库中提供了⼀系列库函数,我们大概可以根据其功能分成两类函数。
2024-08-17 19:11:20
553
原创 关于vs调试的一些基本技巧方法,建议新手学习
当程序员写完代码,测试再对程序进⾏测试,直到程序的质量符合交付客户使用的标准,这个时候就会设置为 release ,编译产⽣的就是 release 版本的可执⾏程序,这个版本是用户使用的,⽆需包含调试信息等。运行时错误是多种多样的,当遇到这种问题时,我们首先可以读一读代码,找找可能出错的位置,再在这些地方进行调式,逐步排查并且找出错误。所以我们每次开始写代码的时候一般都是为Debug模式。在打开内存窗口后,要在地址栏输⼊:arr(数组的首元素表示地址),&num,&c,这类地址,就能观察到该地址处的数据。
2024-08-09 19:30:30
775
原创 我的创作纪念日
现在学历不怎么样,计划是先学好技术为先,往后的知识是越来越多,并且伴随着难度的提升,学习压力肯定不小,但是我肯定能够坚持学下去。对于日常写博客这方面,有时候因为其它事情的耽误确实需要很久才能写一篇,所以我应该提高学习效率,并且能够抽出时间来写博客。在这一段时间的写博客过程中,能够让我发现之前的学习过程中遗漏的一些问题并解决,并会有一个很不错的复习效果。你需要花时间去回想所学的知识,需要深刻地对知识去理解,并思考如何用简单的话语描述这抽象的知识。而博客也会写好,我相信,博客会见证我的成长。
2024-08-08 21:57:00
190
原创 C语言 之 理解指针(8)数组和指针相关的题目 详细解答 快来观看
这里主要讲解的是通过sizeof和strlen来对数组和指针进行更深入的一些了解,建议有兴趣与初学者可以先尝试自己思考来完成。
2024-08-01 19:49:34
778
原创 C语言 之 理解指针(4)
首先就像之前所说的,数组名是首元素的地址,str1和str2两个数组的内容虽然相同,但是使用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块,所以他们的地址是不同的。我们也知道,数组传参的本质是传首元素的地址,那就意味着⼆维数组传参本质上也是传递地址,传递的是第⼀行这个⼀维数组的地址,由于这个二维数组的首元素地址是一整个数组,那么形参也是可以写成指针形式的,即数组指针变量的形式。所以,根据数组名是数组首元素的地址这个规则,⼆维数组的数组名表示的就是第⼀行的地址,是⼀维数组的地址。
2024-07-24 17:32:58
986
原创 C语言 之 理解指针(1)
就是先获取该数组的首元素的地址,从前面我们知道,指针的类型的作用是指针+1 所跳过的字节数,int为整形,大小为4个字节,所以p+1就跳过4个字节,p+2就跳过8个字节,计算机的CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后数据也会放回内存中,如果想对这些空间进行高效的管理,就可以。并且我们知道,数组的元素存放是随着下标增长,内存地址变大的。上面的代码创建了一个整型变量n,因为一个整形的大小是4个字节,所以内存中申请了4个字节,⽤于存放整数10,其中每个字节都有地址。
2024-07-20 18:10:49
1395
2
原创 C语言之使用操作符前须知的一些简单基础知识
本篇文章主要讲的是二进制和进制转换、原码、反码、补码、操作符的属性:优先级、结合性这几个使用操作符的时候需要了解的一些简单的基础知识。
2024-07-16 23:35:50
283
原创 C语言之操作符详解 初学者可以来看看喔
首先,我们需要学习的操作符是可以根据其功能作用分为许多类的,大概可以分为以下类让我们来逐个逐个了解吧!算术操作符有这5个上面四个分别是 加、减、乘、除、取余其中取余就是取余数,即一个整数不能继续被除时,余下的数。例如5 % 2 == 1;11 % 3 == 2;这里有以下三个需要注意的点移位操作符有两个首先要注意的是 移位操作符的操作数只能是整数规则:左边抛弃、右边补0如下图所示 是 n=5; n<<1 的结果左移一位之后右边空缺的位置补0要注意经过 n << 1 之后,n的值是不变的,
2024-07-16 20:32:57
1367
3
原创 C语言之 函数的递归及相关的简单习题
对于递归的简单理解就是递归在程序的算法中有广泛的使用,可以说是一个非常重要的知识内容,难度还是有的,现阶段我也只是简单的理解...递归是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。ps:但是能写出这个递归有一些难度。
2024-07-13 23:36:31
314
原创 C语言之 函数 详细讲解
自定义函数就是根据自己所需要来写一个能完成相应功能的函数所以相比之下 自定义函数那可太重要了自定义函数和库函数一样,有函数名,返回值类型和函数参数statement;//语句项//type 返回类型//fun_name 函数名//para1 para2 函数参数函数的返回类型是根据返回值来写的,若想返回整数,则函数返回类型为int,若什么都不返回,则用void当然,函数参数根据自己需要来写,你不需要的话就可以不用参数,直接()就可以啦来个例子(x):(y);
2024-07-13 23:03:49
1304
4
原创 C语言 之 猜数字小游戏
注意:这里的循环条件不一定要设为1,可以设定并初始化count,然后程序中每猜测一次count--等方式来限制游戏次数,可以自己尝试哟。,这也是我们把1作为play,把0作为exit的原因,如果我们选择的是1那么就可以循环进行游戏,输入0就退出游戏。但是上面说了至少会执行一次,所以如果只想用0来退出游戏是行不通的,这个时候我们就可以引入。上面完成的菜单模块是至少需要呈现一次的,既然至少需要运行一次,那我们自然而然得应该想到。因为程序的运行的顺序是按照主函数的顺序来执行的,所以我们很需要关注主函数怎么完成。
2024-03-10 20:11:28
514
2
原创 C语言之随机数的生成
之所以每次程序运行产生的随机数是一样的,是因为rand函数生成随机数的默认种子是1,如果我们想要生成真正不同的随机数,那我们就需要让种子发生变化。下面两张图是两次运行的结果,我们可以发现这个函数确实生成了随机数,但是两次生成的函数却是一样的。time函数会返回 1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒,也就是相差的秒数,所以是一直在变化的。伪随机数只是相对随机的,而我们想要的是真正的随机数,真正的随机数应该是我们无法精准预判将要生成的数是什么。
2024-01-25 18:03:16
874
原创 C语言之两个数的交换以及求最大/小值
当在数组中某个元素比我们假定的最值a[0]的值更大/小时,就会进入到if语句中,将这个值赋给变量Max/Min,那么此时这个值就是新的最值,然后继续将该值与其它元素进行比较。求最值的理解就好比是打擂台,将第一位上场的选手先当作是最强的,然后其他的参赛选手则一个接一个的上场,如果有实力那么就会留在擂台上,没实力就下台,这样就能选出真正最强的选手啦!把cup从a获得的值10 赋值给b,使b的值为10,这样就成功完成交换啦。如果给我们两个值a和b,需要我们将a和b的值互换过来,我们应该如何操作呢?
2024-01-24 13:05:47
828
原创 C语言中的9种控制语句
return就是返回一个值,自定义了一个ADD函数后,在主函数中使用并将3,4两个值传给了这个函数,然后在这个自定义函数中进行了处理之后返回到主函数当中。就拿上面的例子来说,婴儿,成人,老年人的睡眠时间要求是不一样的,所以我们可以先对年龄进行一个判断,再根据这个年龄需求来对睡眠时间进行判断。如果没有搭配那么就会像上图一样,在输入5,程序来到5的语句之后,会把后面的语句6、7的语句都执行。在下图中,循环的条件是i < 3,,但是i的初始值是5,但是仍然能被执行一次。那只有一个if的话,这也太少了吧?
2024-01-20 22:58:12
1589
原创 C语言中的语句与结构(很简单的 来瞧一瞧吧!!)
我认为结构是一个能够实现指定目的的框架,而这个框架是由各种语句组合而成的。一般情况下出现这个语句是此处需要一个语句,但是这个语句不需要做任何事,所以就可以使用空语句了。以上便是简单的对C语言中语法和结构的关系的简单介绍,要写好代码肯定是要熟悉这些语句和结构的。3. 转向语句:break语句、go to语句、continue语句、return语句。do...while语句 与 while语句 的主要区别是 do...while语句。主要是在程序中,程序是按照顺序运行的,可以简单的理解为从上到下的顺序运行。
2024-01-19 00:38:05
842
原创 第一篇博客 我的选择
首先我是想学习C语言,先进行一个入门,掌握初阶内容,在学到一定程度后就学习C++,学完这两门语言后就进攻Linux的系统编程和网络编程,之后再学习MySQL数据库。考研也是一直在顾虑的,不知道有没有人能够给我解答这个 问题,我想通过考研改变二本这个学历,不追求985211,一本就可以,但是考研伴随着失败的风险还有需要占用很多的时间,所以有没有必要考研呢?我的专业是计算机科学与技术,我的学校是民办二本,所以我很清楚我在起点上已经输给了许多人,那么我认为我在今后的行动上肯定得比别人更加努力,学好编程!
2023-11-24 17:53:31
78
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人