C语言
文章平均质量分 89
豆浆粉牛奶
小时候总想的出去走走,后来才知道家才是我唯一的避风港,还是老样子,"有钱没钱回家过年"
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c语言->学会offsetof宏计算结构体相对偏移量
我们假设结构体起始地址就是0,这样其成员的地址取出来再强制类型转换为int便可以表示结构体中某个成员相对于起始位置的偏移量,这是一种很巧妙的思考方式,即可实现宏 offsetof 的模拟实现;原创 2024-01-22 18:58:27 · 997 阅读 · 11 评论 -
C 语言->编译和链接实现原理
1.翻译环境和运⾏环境1.翻译环境和运⾏环境在ANSI C的任何⼀种实现中,存在两个不同的环境。是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。是执⾏环境,它⽤于实际执⾏代码。如图:2.翻译环境那翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?这⾥我们就得展开开讲解⼀下翻译环境所 做的事情。其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编 译)、编译、汇编三个过程。如图:.c文件生成可执行文件过程:•。原创 2024-01-19 22:13:44 · 2660 阅读 · 73 评论 -
枚举类型有着一篇足以
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。(2)DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1.(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#define的替代。(6) 类型定义以分号;结束。原创 2024-01-19 13:21:10 · 777 阅读 · 44 评论 -
自动生成随机数
rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是依赖编译器上实现的,但是⼤部分编译器上是32767。原创 2023-10-24 18:01:52 · 410 阅读 · 2 评论 -
C语言-> 文件操作(函数满屏)
1.为什么使⽤⽂件?如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。2.什么是⽂件?。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。2.1程序⽂件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。原创 2023-12-19 20:41:59 · 10797 阅读 · 135 评论 -
C语言->动态内存管理
目的:学习malloc,free,calloc,realloc函数的使用。1.为什么要有动态内存分配//在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的⽅式有两个特点:•空间开辟⼤⼩是固定的。•数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。原创 2023-12-15 15:24:18 · 2313 阅读 · 55 评论 -
c语言->自定义类型联合体和枚举类型
✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉学习联合体和枚举类型的声明联合体的特点和大小,枚举类型的有点和使用。1.联合体类型的声明像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。输出结果:4为什么是4呢?接下来我们来了看。原创 2023-12-12 09:57:13 · 3431 阅读 · 77 评论 -
c语言->浅学结构体
4.3位段的跨平台问题1.int 位段被当成有符号数还是⽆符号数是不确定的。2.位段中最⼤位的数⽬不能确定。(16位机器最⼤16,32位机器最⼤32,写成27,在16位机器会 出问题。3.位段中的成员在内存中从左向右分配,还是从右向左分配标准尚未定义。4.当⼀个结构包含两个位段,第⼆个位段成员⽐较⼤,⽆法容纳于第⼀个位段剩余的位时,是舍弃 剩余的位还是利⽤,这是不确定的。原创 2023-12-11 12:34:37 · 2016 阅读 · 42 评论 -
c-语言->数据在内存的存储
目的:学习整数在内存的储存,什么是大小端,浮点数的储存。1.整数在内存中的存储在讲解操作符的时候,我们就讲过了下⾯的内容:整数的2进制表⽰⽅法有三种,即 原码、反码和补码。正整数的原、反、补码都相同。负整数的三种表⽰⽅法各不相同。原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。补码:反码+1就得到补码,补码也可以取反+1得到源码。原创 2023-12-10 08:33:31 · 1876 阅读 · 49 评论 -
C - 语言->内存函数
学习c语言的只要内存函数及其模拟实现,掌握函数返回类型,并模拟。正文开始了1.memcpy使⽤和模拟实现函数内容:作用:复制数据,和前面strcpy相似。返回类型:无返回1.函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置.2.这个函数在遇到'\0'的时候并不会停下来.3.如果source和destination有任何的重叠,复制的结果都是未定义的.也就是说:c语言对memcpy的定义是对不重复内存。原创 2023-12-07 16:53:33 · 2754 阅读 · 83 评论 -
C语言 - 字符函数和字符串函数
目的:学习主要常见字符串和字符串函数,及其部分函数的模拟过程原创 2023-12-05 23:34:48 · 1940 阅读 · 57 评论 -
浅学指针(5)sizeof和strlen的进阶理解
目的:深入学习sizeof和strlen和有关2维数组的指针形式。• sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,单位是字节• &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)除此之外,任何地⽅使⽤数组名,数组名都表⽰⾸元素的地址。原创 2023-12-03 23:41:22 · 1748 阅读 · 56 评论 -
浅学指针(4)函数指针数组和qsort的使用
掌握函数指针数组的使用,qsort函数的内部实现。原创 2023-12-01 15:21:12 · 1635 阅读 · 37 评论 -
浅学指针(3)
学习字符指针变量,数组指针变量,函数指针变量,函数指针数组,三个变量要有所理解,还有、函数指针数是重点内容。原创 2023-11-29 21:06:24 · 1714 阅读 · 53 评论 -
浅学指针(2)数组函数传值调用
学习指针的⽬的是使⽤指针解决问题,那什么问题,⾮指针不可呢?案例:写⼀个函数,交换两个整型变量的值x = y;y = tmp;int b = 0;printf("交换前:a=%d b=%d\n", a, b);printf("交换后:a=%d b=%d\n", a, b);return 0;输出结果:这是为什么呢?原创 2023-11-21 23:01:26 · 822 阅读 · 34 评论 -
浅谈指针(1)
注意指针变量的⼤⼩和类型是⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的,所以说*p的大小可以比较,指针变量p不可以比较原创 2023-11-19 22:09:29 · 390 阅读 · 13 评论 -
冒泡优化和扩展
优化提高效率void bubble_sort(int arr[], int sz)//参数接收数组元素个数int i = 0;for(i=0;i原创 2023-11-19 21:04:05 · 251 阅读 · 7 评论 -
进制转换和整型提升
2 进制,8进制,10进制,16进制其实2进制、8进制、10进制、16进制是数值的不同表⽰形式⽽已。2进制:8进制10进制16进制案例1将二进制数1100.11转换为十进制数案例2将八进制数163.24转换为十进制数案例3将十六进制数A3F.3E转换为十进制数表达式的整型运算要在CPU的相应运算器件内执⾏,CPU内整型运算器(ALU)的操作数的字节⻓度⼀般就是int的字节⻓度,同时也是CPU的通⽤寄存器的⻓度。因此,即使两个char类型的相加,在CPU执⾏时实际上也要先转换为CPU内整型操原创 2023-11-15 18:31:56 · 244 阅读 · 5 评论 -
初入操作符(基础)
重点:位移操作符和逻辑在操作符题目:求⼀个整数存储在内存中的⼆进制中1的个数分析:2进制中最容易得到的是最后一位,只要 n (整数)& 1,如果 n & 1 == 1,则说明最后一位是 1,反之为 0,然后n移动就可以,算出所有位数。原理:原创 2023-11-10 15:41:33 · 306 阅读 · 3 评论 -
浅学函数递归
递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。原创 2023-11-07 19:04:04 · 197 阅读 · 0 评论 -
(浅学)C语言函数
C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。这段代码是有特殊的写法和调⽤⽅法的。C语⾔的程序其实是由⽆数个⼩的函数组合⽽成的,也可以说:⼀个⼤的计算任务可以分解成若⼲个较⼩的函数(对应较⼩的任务)完成。同时⼀个函数如果能完成某项特定任务的话,这个函数也是可以复⽤的,提升了开发软件的效率。在C语⾔中我们⼀般会⻅到两类函数:• 库函数• ⾃定义函数函数的语法形式ret_type fun_name(形式参数)• ret_type 是函数返回类型。原创 2023-11-05 11:58:21 · 180 阅读 · 2 评论
分享