C语言
文章平均质量分 80
C语言的学习
敲代码的布莱恩特
Just do it
展开
-
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)
【C语言】C语言——指针进阶????初阶指针请点击此跳转⭐1. 字符指针⭐2.指针数组⭐ 3. 数组指针⭐4. 数组传参和指针传参⭐ 5. 函数指针⭐ 6. 函数指针数组⭐7. 指向函数指针数组的指针⭐8. 回调函数????初阶指针请点击此跳转https://blog.csdn.net/DerrickWestbrook/article/details/117787490.指针的主题,在上述链接文章中已经解释过了,我们已经知道了指针的概念:指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指原创 2021-10-21 18:55:07 · 218 阅读 · 3 评论 -
【C语言】可以不用,但不能不会的——文件操作(附上高阶版本通讯录)
【C语言】可以不用,但不能不会的——文件操作????什么是文件????程序文件????数据文件????文件名????文件类型????文件缓冲区????文件的打开和关闭????文件指针????文件的顺序读写????文件的随机读写????文件结束的判定????什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类)????程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windo原创 2021-10-02 16:29:39 · 1656 阅读 · 52 评论 -
【C语言】想要节省空间,你必须要知道——动态内存管理(附通讯录动态内存版源码)
想要节省空间,你必须要知道——动态内存管理1.——为什么存在动态内存分配2.——动态内存函数的介绍2.1——malloc2.2——freemalloc和free通常配合一起使用:2.3——calloc2.4——realloc3.——常见的动态内存错误4.——几个经典的笔试题5.——柔性数组1.——为什么存在动态内存分配我们已经掌握的内存开辟方式有:int val = 20; //在栈空间上开辟四个字节char arr[10] = {0}; //在栈空间上开辟10个字节的连续空间但是上述的开辟空原创 2021-09-29 07:45:30 · 1876 阅读 · 44 评论 -
【C语言】一篇搞定自定义类型:结构体、枚举、联合体(共用体)附上简易通讯录项目源码
一篇搞定自定义类型:结构体、枚举、联合体(共用体)1. 结构体1.1 结构体类型的声明1.2 结构的自引用1.3 结构体变量的定义和初始化1.4 结构体内存对齐1.5 为什么存在内存对齐1.6 修改默认对齐数1.7 结构体传参1.7 结构体实现位段(位段的填充&可移植性)2. 枚举2.1 枚举类型的定义2.2 枚举的优点2.3 枚举的使用3. 联合3.1 联合类型的定义3.2 联合的特点3.3 联合大小的计算4. 利用自定义类型实现简易通讯录程序1. 结构体结构的基础知识结构是一些值的集合,原创 2021-09-20 04:27:17 · 600 阅读 · 57 评论 -
【C语言】常用库函数的介绍与模拟实现(有手就行)——— 字符 / 字符串 库函数
字符 / 字符串 库函数的模拟实现strlen函数函数介绍重写模拟实现strcpy函数函数介绍重写模拟实现strcat函数函数介绍重写模拟实现strcmp函数函数介绍重写模拟实现strstr函数函数介绍重写模拟实现memcpy函数函数介绍重写模拟实现memmove函数函数介绍重写模拟实现strlen函数函数介绍size_t strlen ( const char * str );字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0原创 2021-09-16 14:32:26 · 736 阅读 · 73 评论 -
【C语言】大厂指针笔试题(1码+1图)详解——程序结果判断题
指针笔试题详解——程序结果判断题笔试题1int main(){ int a[4] = { 1, 2, 3, 4 }; int *ptr1 = (int *)(&a + 1); int *ptr2 = (int *)((int)a + 1); printf( "%x,%x", ptr1[-1], *ptr2); return 0; }//程序的结果是什么?代码分析:① int a[4] = { 1, 2, 3, 4 };由于本人电脑是原创 2021-09-12 00:48:42 · 2644 阅读 · 81 评论 -
【C语言】一篇就够了(建议收藏)——超详解sizeof与strlen的用法
在讲所有东西之前,需要明确一个关键问题:数组名的意义:sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小, 单位是字节&数组名,这里的数组名表示整个数组,取出的是整个数组的地址除此之外所有的数组名都表示首元素的地址。一维数组 //一维数组 int a[] = { 1,2,3,4 }; printf("%d\n", sizeof(a)); printf("%d\n", sizeof(a + 0)); printf("%d\n", sizeo原创 2021-09-07 18:04:49 · 1049 阅读 · 49 评论 -
【C语言】使用回调函数通过冒泡排序模拟实现qsort函数
回调函数是什么?回调函数:就是一个通过函数指针调用的函数。如果你把函数的指针(地址) 作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。先来举个qsort函数的使用案例:qsort()函数:声明:参数:这里用到qsort函数实现对数组元素的从小到大排序#include <stdio.h>#include <stdlib.原创 2021-09-02 18:23:20 · 392 阅读 · 12 评论 -
scanf()函数和回车的处理
c语言中在读取键盘数据时,一般是带缓存的数据输入,需要按回车键才能完成该“行”数据的输入确认。而 scanf()函数对这个回车确认符并不进行处理,回车符会留在输入缓存区中。因此,在下一个读“字符”操作函数(getchar, scanf("%c"), gets()等)运行时,会读到这个字符。而在读数值型数据或字符串时,scanf()会从第一个非空白字符(空白字符指:回车,空格,TAB键)开始读取,自动忽略前面的空白字符,而遇到空白字符结束该类型数据的输入。因此,是否一定要在scanf后面跟个 getc原创 2021-06-26 00:34:43 · 7269 阅读 · 1 评论 -
【C语言】char类型在内存中的储存
例:这段代码会输出一个什么结果——————————————————————————————————————int main(){char a[1000];int i;for (i = 0; i < 1000; i++){a[i] = -1 - i;}printf("%d", strlen(a));//255//因为char储存-128~127 ,’\0’Ascii码为0,即a[i]=0;strlen读取到\0return 0;}———————————————————————原创 2021-08-09 17:48:16 · 1318 阅读 · 1 评论 -
【C语言】四行代码说明浮点型在内存中的储存
浮点数在内存中的储存 浮点数和整型数存入内存中的方式不同,它有一个专门的标准:根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式: (-1)^S * M * 2^E(-1)原创 2021-08-10 00:20:29 · 386 阅读 · 1 评论 -
【C语言】回炉重造的C之指针+结构体
C——指针和结构体(1)一、指针到底是个什么牛马?1.说指针之前先来了解下——内存2.内存用来干什么3.指针二、指针怎么使用* ——解引用操作符三、指针的大小四、结构体总结 ——已经是第二次学C语言了,第一次学就是在指针这块遇到了问题,现在回过头再来学习,还是有必要自己整理一些干货的****不是详细版本 ------仅方便理解****一、指针到底是个什么牛马?1.说指针之前先来了解下——内存由于我们的电脑有32位/64位两种,拿32位来举例子32位——32根地址线(也就是电线.原创 2021-06-10 23:18:46 · 706 阅读 · 2 评论