
【C语言】
文章平均质量分 80
Root_Smile
这个作者很懒,什么都没留下…
展开
-
【C语言】学习C语言
C语言是一门十分流行的编程语言,由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。C语言具有高效、可移植、灵活、简单等特点,被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。本文将带你简单了解一下C语言,在了解C语言后我们将学习它。原创 2024-05-07 20:37:52 · 1198 阅读 · 0 评论 -
【C语言】错误处理
C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 errno.h 头文件中找到各种各样的错误代码。所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 errno 设置为 0,这是一种良好的编程习惯。0 值表示程序中没有错误。转载 2024-05-07 20:01:38 · 86 阅读 · 0 评论 -
【C语言】预处理器
ANSI C 定义了许多宏。在编程中您可以使用这些宏,但是不能直接修改这些预定义的宏。宏描述__DATE__当前日期,一个以 “MMM DD YYYY” 格式表示的字符常量。__TIME__当前时间,一个以 “HH:MM:SS” 格式表示的字符常量。__FILE__这会包含当前文件名,一个字符串常量。__LINE__这会包含当前行号,一个十进制常量。__STDC__当编译器以 ANSI 标准编译时,则定义为 1。实例int main()return 0;原创 2024-05-07 18:24:35 · 1003 阅读 · 0 评论 -
【C语言】C语言代码的头文件与源文件有什么区别?
假定编译程序编译myproj.c(其中含main())时,发现它include了mylib.h(其中声明了函数void test()),那么此时编译器将按照事先设定的路径(Include路径列表及代码文件所在的路径)查找与之同名的实现文件(扩展名为.cpp或.c,此例中为mylib.c),如果找到该文件,并在其中找到该函数(此例中为void test())的实现代码,则继续编译;在随后的代码重用过程中,我们只需要提供相应的头文件(.h)和相应的库文件(.lib),就可以使用过去的代码了。原创 2024-05-07 18:03:08 · 524 阅读 · 1 评论 -
【C语言】动态分配内存
(1)运行代码程序会出现崩溃现象;(2)程序存在内存泄漏问题:str 以值传递的形式给 pp 是 GetMemory 函数的形参,只在函数内有效等 GetMemory 函数返回之后,动态开辟内存尚未释放并且无法找到,所以会造成内存泄漏。原创 2024-05-07 11:21:53 · 1827 阅读 · 1 评论 -
【C语言】命令行参数
应当指出的是,argv[0]存储程序的名称,argv[1]是一个指向第一个命令行参数的指针。*argv[n]是最后一个参数,如果没有提供任何参数,argc将为1;如果传递了一个参数,argc将被设置为2。命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[ ]是一个指针数组,指向传递给程序的每个参数。笔者使用的是Dev-C++5.11,传入参数方式为:点击“运行”中的“参数”下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作。原创 2024-05-04 22:58:43 · 283 阅读 · 0 评论 -
【C语言】可变参数
有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接收可变数量的参数。请注意,函数func()最后一个参数写成省略号,即三个点号(…),省略号之前的那个参数总是int,代表了要传递的可变参数的总数。现在让我们按照上面的步骤,来编写一个带有可变数量参数的函数,并返回它们的平均值。头文件,该文件提供了实现可变参数功能的函数和宏。为了使用这个功能,您需要使用。原创 2024-05-04 21:35:45 · 158 阅读 · 0 评论 -
【C语言】指针
C语言的BOSS来了。原创 2024-05-01 21:08:10 · 1539 阅读 · 0 评论 -
【C语言】自定义数据类型
struct 结构体名成员列表在定义结构体时,常常会用typedef起一个别名【C语言】typedef//定义结构体Studentint s_age;/*typedef起别名int s_age;}ST;定义变量时直接使用ST即可ST stu;*///结构体变量的初始化//结构体成员访问:使用'.'访问return 0;在C语言中不存在结构体类型的强制转换结构体指针变量char* s_id;int* s_age;结构体嵌套int year;原创 2024-04-26 10:09:47 · 1120 阅读 · 0 评论 -
【C语言】typedef
2)在连续定义几个变量的时候,typedef能够保证定义的所有变量的均为同一类型,而#define却无法保证。1)可以使用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能这样做。为一个数据类型起一个新的别名。原创 2024-04-25 20:14:00 · 299 阅读 · 0 评论 -
【C语言】变量占用内存的大小&&内存对齐
当然,你也可以用sizeof()来查看变量占用内存的大小。原创 2024-04-25 17:23:48 · 556 阅读 · 0 评论 -
【C语言】文件操作
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息。如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。如果成功,则返回写入的字符总数,否则返回一个负数。原创 2024-04-24 22:25:58 · 762 阅读 · 0 评论 -
【C语言】存储类
存储类定义C程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出C程序中可用的存储类:auto register static extern。原创 2024-04-24 10:58:46 · 827 阅读 · 0 评论 -
【C语言】字符串
atoi()和atof()函数有一个缺点是:如果当字符串是其他非数字字符,会返回0,如果是数字0的话,照样返回0,这样就无法辨别到底是字符’0’还是其他非数字字符。返回结果:str1str2,返回正值(1);空格、回车或制表(Tab)符是输入数据的分隔符,因而不能被读入,输入遇到这些字符时,系统认为字符串输入结束。C语言用字符数组存放字符串,字符数组中的各元素依次存放字符串的各字符。以上的三个字符串都不能再添加内容,因为它们的字节上限是10。原创 2024-03-31 20:15:12 · 761 阅读 · 1 评论 -
【C语言】作用域规则
任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。原创 2024-03-30 20:16:37 · 387 阅读 · 0 评论 -
【C语言】数组
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。数组中的特定元素可以通过索引访问,第一个索引值为0。原创 2024-03-26 17:22:12 · 759 阅读 · 0 评论 -
【C语言】函数
在C语言中,函数由一个函数头和一个函数主体组成。返回类型:一个函数可以返回一个值。return_type是函数返回的值的数据类型。有些函数执行所需的操作而无返回值,在这种情况下,return_type是关键字void函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数(实参)。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。原创 2024-03-24 13:30:12 · 649 阅读 · 0 评论 -
【C语言】break和continue的区别
例5中循环内部的switch语句中的continue是直接结束本次循环,switch语句块后面的printf(“Hello World!在这里break的作用只会跳出switch()语句块,执行switch语句块后面的程序printf(“Hello World!例3是一个两层for循环,break语句只会跳出最近的一层循环,第二层for循环继续执行。i = 2没有被打印,是因为continue 结束了那一次循环,继续了下一次循环。break语句直接结束了本层的循环, 直接执行循环后边的语句。转载 2024-02-28 18:17:04 · 271 阅读 · 0 评论 -
【C语言】循环
重复同样的操作是很麻烦的事,这时我们就要用到循环结构了。原创 2024-02-28 00:00:14 · 1029 阅读 · 0 评论 -
【C语言】判断
C语言是一种结构化的语言,其中包含三大结构:顺序结构、分支结构、循环结构我们今天讲的”判断“就是分支结构。C语言把任何非零和非空的值假定为true,把零或null假定为false。原创 2024-02-25 21:44:05 · 378 阅读 · 0 评论 -
【C语言】原码、反码、补码
(机器存储一个具体数字的编码方式)转载 2024-02-25 16:00:32 · 111 阅读 · 0 评论 -
【C语言】进制
因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再讲积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。数制:也称为计数制,是一种计数的方法,是用一组固定的符号和统一的规则来表示数值的方法。原创 2024-02-23 20:27:49 · 1065 阅读 · 0 评论 -
【C语言】运算符及其优先级
无符号右移与右移的区别:进行右移运算的时候,如果操作数是一个正数,那么左边的空缺位使用0补,如果操作数是一个负数,那么左边的空缺位使用1补。2)不同点: 使用短路与的时候,如果左边的布尔表达式为false,则不会在运算右边的布尔表达式,从而提高了效率。使用单与的时候,即使发现左边的布尔表达式为false,还是会运算右边的布尔表达式的。,在Java中用“>>>”表示,C语言中可以利用((unsigned int) (-3))>>2来实现 无论是正数还是负数,其无符号右移都是在其补码的基础上右移,高位补0。原创 2024-02-23 17:14:24 · 1079 阅读 · 0 评论 -
【C语言】scanf函数的用法
s=1n=2l=3f=4.5df=6.7 由于scanf的第一个参数是"s=%hd n=%d l=%ld f=%f df=%lf",带有空格。当然,如果scanf的第一个参数是"s=%hdn=%dl=%ldf=%fdf=%lf",那么这样就是正确的。3.scanf会将数据填充到对应的变量里去,必须指明被填充的对象是什么,用int来填充char很显然是错误的,所以必须明确指定长度指示符。s=1,n=2,l=3,f=4.5,df=6.7 错误,由于scanf的第一个参数是用空格分隔的。以下几个是错误的示范。转载 2023-07-13 13:10:11 · 424 阅读 · 1 评论 -
【C语言】printf函数的用法
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。转载 2023-07-12 20:28:04 · 1586 阅读 · 2 评论 -
【C语言】常量
在C中,有两种简单的定义常量的方式:1.使用#define预处理器2.使用const关键字。原创 2023-07-12 17:06:42 · 486 阅读 · 1 评论 -
【C语言】C语言入门
只能强制进行的类型转换一般风险较高,或者行为匪夷所思,例如,char * 到 int * 就是很奇怪的一种转换,这会导致取得的值也很奇怪,再如,int 到 char * 就是风险极高的一种转换,一般会导致程序崩溃。2.写给其他程序员,便于别人看懂你的代码,因为代码是按你自己想法写的,一些名称也是你命名的,你自己知道的内容和功能之类的,别人未必知道。作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。原创 2023-07-05 21:45:24 · 246 阅读 · 0 评论