![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言语法
文章平均质量分 90
你好呀我是裤裤
你好呀,我是裤裤
展开
-
解锁联合体和枚举类型魅力
由于联合体共用一块内存空间,因此我们可以得到如下结论:联合体可以避免不必要的内存浪费,使得内存使用更加高效。在C中,是可以用整数给枚举变量赋值的,但由于CPP的类型检查更加严格,所以不能使用整数给枚举变量赋值。我们打印出了联合体的两个成员的地址以及联合体的地址,发现他们是一样的,因此他们共用一块内存空间。由于联合体共用同一块内存空间,在给un.c赋值之后,un.c的值共用了原来un.i的低地址的空间。这些可能取值都是有值的,默认从0开始,依次加1,也可以在声明枚举变量时赋初值。原创 2024-04-30 10:13:29 · 685 阅读 · 2 评论 -
解密C语言内存分配奥秘,遨游动态内存管理海洋
在C99标准中,结构中的最后一个元素允许是未知大小的数组的。原创 2024-04-29 19:43:24 · 931 阅读 · 4 评论 -
跟裤裤一起探索结构体的奥秘!
位段的声明和结构是类似的,有两个不同:1.位段的成员必须为int类型,有符号无符号都可,但在C99标准中,位段也可选择其他类型。2.位段的成员名后面有一个冒号和一个数字。数字表示其占用的比特位下面来实现一个位段类型struct Aint _a : 2;//占用2个比特位int _b : 5;//占用5个比特位//占用10个比特位//占用30个比特位。原创 2024-04-24 11:20:12 · 816 阅读 · 2 评论 -
裤裤带你一起学C语言内存函数啦!
内存函数在库中,我们使用内存函数必须先引入头文件。原创 2024-04-23 21:13:41 · 623 阅读 · 5 评论 -
裤裤带你学C语言字符串函数库啦!一篇文章讲透!!!
这个是一个字符串比较函数,但是只比较num个字符。这个函数是比较str1和str2的前num个字符,如果相等就继续向后比较,一直比较到第num个字符。原创 2024-04-23 18:20:37 · 1061 阅读 · 0 评论 -
冒泡排序及冒泡排序版本qsort实现
如此循环往复,当我们第九次遍历的时候,是不是就可以让倒数第二个是最大的了呢,那么,我们整个的数组就有序了!现在我们实现了一个冒泡排序,但是如果我给的数字是1 2 3 4 5 6 7 8 9 10的话,用上面的代码再进行排序,还是要进行一轮又一轮的比较才可以,即便它并不需要交换。现在,我们继续分析,经过这轮比较,每次比较中较大的数都会向右移动一位,这轮比较结束后,最右边的数字一定是目前数字中最大的数字,但是中间9个数字的大小却无法确定,如果你不能理解的话,可重读一遍上面的红字。现在我们就完成了一次冒泡排序。原创 2024-04-05 15:56:48 · 746 阅读 · 1 评论 -
指针(四)
数组指针变量,也就是存放数组地址的指针变量。现在给大家写两行代码,请大家判断一下p1和p2分别是什么。先给大家介绍一下两个知识点1.操作符的优先级:()>[]>*2.一个变量,去掉变量名,就是变量的类型。根据这两个知识点,我们来观察一下这两行代码。第一行代码中,p1要先和[10]结合,因此变量名是p1[10],之后p1[10]再和前面的*结合,因此这是一个指针数组,其中的每个元素的类型是int*。第二行代码中,有括号,先将p2和前面的*结合,说明p2是一个指针变量,然后去掉变量名p2,得到。原创 2024-04-05 00:01:38 · 682 阅读 · 2 评论 -
指针(三)
在前面的文章中,有这样的代码这里我们使用&arr[0]的方式拿到了数组的第一个元素的地址,但其实数组名就是数组首元素的地址。下面我们进行一个测试。但是,有两个例外,arr表示的不是首元素的地址。除了这二者之外,任何地方使用数组名,数组名都代表首元素的地址。现在我们来观察一下这段代码我们发现,这三行代码打印出来的结果一模一样,那么他们的区别在哪里呢?我们刚刚说了&arr表示取出一个数组的地址,他们的区别就在这里。原创 2024-04-02 22:42:48 · 1180 阅读 · 4 评论 -
指针(二)
野指针即只想位置不知道的指针(随机的,不正确的,没有明确限制的)原创 2024-04-02 16:58:08 · 933 阅读 · 1 评论 -
指针详解(一)
专业的说,CPU在处理数据的时候,需要的数据是在内存当中读取的,处理后的数据也会放回内存中,而内存划分为了一个个的内存单元,每个单元的大小取1个字节,也就是8个比特位,而每个内存单元都有一个编号,有了这个编号,我们就可以快速的找到这个内存单元。第二种情况放在*的右边,修饰的是pm,即确保指针变量本身的内容不能改变,但是*pm指向的内容是可以变化的,即,我们不可以修改pm,但是可以修改*pm。又因为和其大小有关系的只是地址总线,而不是它指向的内容,因此,无论指向的是什么类型的数据,都不会影响指针变量的大小。原创 2024-03-28 16:19:48 · 1146 阅读 · 0 评论 -
位操作符详解
位操作符和二进制有一定的关系,我们先铺垫一些二进制和进制转换的知识。原创 2024-03-26 16:31:57 · 644 阅读 · 0 评论 -
函数递归详解
上述代码就是一个最简单的递归程序,但是上面的递归知识为了演示递归的基本形式,如果运行的话会陷入死递归,最后栈溢出。原创 2024-03-18 22:07:34 · 750 阅读 · 1 评论 -
二维数组以及变长数组
上一篇博客中详细介绍了一维数组的相关知识点,现在我们介绍一下二维数组。一维数组作为元素的数组就叫做。二维数组作为元素的数组叫做二维数组以上的数组叫做。原创 2023-12-12 22:45:29 · 1377 阅读 · 1 评论 -
数组(一)
数组中存放的是一个或多个数据,但是数组的元素个数不能为0.数组中存放的数据的类型是相同的。数组分为一维数组和多维数组。原创 2023-12-11 23:56:39 · 923 阅读 · 1 评论 -
C语言分支以及循环
break语句的用处是终止循环。continue语句的用处是跳出本次循环后面的代码,直接进入下次循环。原创 2023-12-03 16:11:47 · 617 阅读 · 1 评论