c语言
文章平均质量分 82
云夏之末
这个作者很懒,什么都没留下…
展开
-
C 内存管理
指针是一个变量,它存储了一个内存地址,这个内存地址可以指向任何数据类型的变量,包括整数、浮点数、字符和数组等。但是,如果您预先不知道需要存储的文本长度,例如您想存储有关一个主题的详细描述。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是 0。您可以尝试一下不重新分配额外的内存,strcat() 函数会生成一个错误,因为存储 description 时可用的内存不足。当程序退出时,操作系统会自动释放所有分配给程序的内存,但是,建议您在不需要内存时,都应该调用函数。原创 2024-09-27 10:32:48 · 327 阅读 · 0 评论 -
C 强制类型转换
例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。在这里,c 首先被转换为整数,但是由于最后的值是 float 型的,所以会应用常用的算术转换,编译器会把 i 和 c 转换为浮点型,并把它们相加得到一个浮点数。在这里,sum 的值为 116,因为编译器进行了整数提升,在执行实际加法运算时,把 'c' 的值转换为对应的 ascii 值。类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用。是隐式地把值强制转换为相同的类型。原创 2024-09-27 10:19:48 · 209 阅读 · 0 评论 -
C 位域基础
如果您用了 32 个变量,每一个变量宽度为 1 位,那么 status 结构将使用 4 个字节,但只要您再多用一个变量,如果使用了 33 个变量,那么它将分配内存的下一段来存储第 33 个变量,这个时候就开始使用 8 个字节。这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1,在这种情况下,C 语言提供了一种更好的利用内存空间的方式。在这个位域定义中,a 占第一字节的 4 位,后 4 位填 0 表示不使用,b 从第二字节开始,占用 4 位,c 占用 4 位。原创 2024-09-26 10:43:46 · 560 阅读 · 0 评论 -
C 字符串
如果 s1 和 s2 是相同的,则返回 0;如果 s1>s2 则返回大于 0。返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。字符放在字符串常量的末尾。您可以在 C 标准库中找到更多字符串相关的函数。是转义字符,意思是告诉编译器,这不是字符。在 C 语言中,字符串实际上是使用空字符。连接字符串 s2 到字符串 s1 的末尾。复制字符串 s2 到字符串 s1。结尾的一维字符数组。,所以字符数组的大小比单词。原创 2024-09-26 10:40:46 · 258 阅读 · 0 评论 -
C 结构体
结构体的大小可能会受到编译器的优化和对齐规则的影响,编译器可能会在结构体中插入一些额外的填充字节以对齐结构体的成员变量,以提高内存访问效率。结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1,则是非法的。//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c。原创 2024-09-26 10:24:14 · 623 阅读 · 0 评论 -
C 文件读写
如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。在这里,您的程序会在已有的文件内容中追加内容。如果写入成功,它会返回写入的字符,如果发生错误,则会返回。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。如果写入成功,它会返回一个非负值,如果发生错误,则会返回。函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型。原创 2024-09-25 11:49:56 · 584 阅读 · 0 评论 -
C 作用域规则
正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,因为未初始化的变量会导致一些在内存位置中已经可用的垃圾值。在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。函数的参数,形式参数,被当作该函数内的局部变量,如果与全局变量同名它们会优先使用。原创 2024-09-25 09:38:47 · 239 阅读 · 0 评论 -
C语言 enum(枚举)
枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5。第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。原创 2024-09-24 10:10:38 · 274 阅读 · 0 评论 -
C 变量定义
int addtwonum() { // 函数内声明变量 x 和 y 为外部变量 extern int x;需要注意的是,局部变量(在函数内部定义的非静态变量)不会自动初始化为默认值,它们的初始值是未定义的(包含垃圾值)。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。在 C 语言中,如果变量没有显式初始化,那么它的默认值将取决于该变量的类型和其所在的作用域。原创 2024-09-24 10:05:46 · 1007 阅读 · 0 评论 -
C 可变参数
在上面的例子中,average() 函数接受一个整数 num 和任意数量的整数参数。最后,在函数结束时使用 va_end() 宏结束可变参数列表的访问。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。被调用两次,每次第一个参数都是表示被传的可变参数的总数。省略号被用来传递可变数量的参数。有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。头文件,该文件提供了实现可变参数功能的函数和宏。,代表了要传递的可变参数的总数。原创 2024-09-23 11:00:09 · 388 阅读 · 0 评论 -
C 数据类型教程
函数的类型指的是函数返回值的类型。在本章节接下来的部分我们将介绍基本类型,其他几种类型会在后边几个章节中进行讲解。在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。不返回值的函数的返回类型为空。类型为 void * 的指针代表对象的地址,而不是类型。得到对象或类型的存储字节大小。它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。原创 2024-09-23 10:27:55 · 680 阅读 · 0 评论 -
C语言的可变参数
在上面的例子中,average() 函数接受一个整数 num 和任意数量的整数参数。最后,在函数结束时使用 va_end() 宏结束可变参数列表的访问。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。被调用两次,每次第一个参数都是表示被传的可变参数的总数。省略号被用来传递可变数量的参数。有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。头文件,该文件提供了实现可变参数功能的函数和宏。,代表了要传递的可变参数的总数。原创 2024-09-20 14:46:10 · 454 阅读 · 0 评论 -
C语言的环境搭建
我们只安装 MinGW-w64 ,所以只需下载 MinGW-w64 即可,点击红框中的"SourceForge"超链接,就会进入 SourceForge 中的 MinGW-w64 下载页面。如果您使用的是 Mac OS X,最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器。最常用的免费可用的编译器是 GNU 的 C/C++ 编译器,如果您使用的是 HP 或 Solaris,则可以使用各自操作系统上的编译器。原创 2024-09-20 11:22:17 · 1128 阅读 · 0 评论