![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 90
爱生活,爱代码
天行健,君子以自强不息
展开
-
c语言预处理 国庆期间不休息弯道超车一篇就够了
目录程序的翻译环境详解编译+链接梳理:程序的执行环境预定义符号介绍预处理指令 #define宏和函数的对比预处理操作符#和##的介绍命令定义预处理指令 #include预处理指令 #undef条件编译程序的翻译环境程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。假设你要处理一个2 + 3 的简单加法计算你的程序会经过预编译、编译、汇编、最终链接生成一.原创 2021-10-01 13:39:36 · 1007 阅读 · 18 评论 -
C语言篇 +文件操作(营养鸡汤期末不挂科)
目录什么是文件文件名文件类型文件缓冲区文件指针总结:补充:文件的打开和关闭那么如何打开桌面上的文件呢?文件的顺序读写文件读写的函数字符输出函数fputc流的概念字符输入函数fgetc总结:文本行输出函数 fputs文本行输入函数 fgets格式化输出函数 fprintf格式化输入函数 fscanf二进制输出 fwrite二进制输入 fread文件的随机读写文件结束的判定什么是文件什么是文件 磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件包括源.原创 2021-09-29 08:03:57 · 1213 阅读 · 35 评论 -
C语言篇 + 内存管理及柔性数组话题
目录为什么存在动态内存分配动态内存函数的介绍malloc和freefree函数的注意事项举例一举例二正确使用callocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)几个经典的笔试题柔性数组为什么存在动态内存分配为什么存在动态内存分配首先我们先了解一下内存中的几个区域栈区、堆区、静态区我们已经掌握的内存开辟方式有:int val =原创 2021-09-25 11:16:05 · 961 阅读 · 47 评论 -
c语言篇 +自定义类型(枚举、联合、结构体)以及位段
目录结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段(位段的填充&可移植性)枚举枚举类型的定义枚举的优点枚举的使用联合联合类型的定义联合的特点联合大小的计算结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段(位段的填充&可移植性)枚举枚举类型的定义枚举的优点枚举的使用联合联合类型的定义联合的特点联合大小的计算...原创 2021-09-20 11:26:44 · 911 阅读 · 55 评论 -
C语言篇 + 字符串处理函数和内存函数的介绍及模拟实现(避开你的语法坑,请注意查收)
目录前言C语言的库函数分类求字符串长度strlenstrlen函数的模拟实现非递归写法递归写法指针相减法长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找strstrstrtok错误信息报告内存操作函数memcpymemmovememsetmemcmp前言C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中 或者 字符数组 中。 字符串常量, 适用于那些对它不做修.原创 2021-09-18 15:57:20 · 736 阅读 · 38 评论 -
C语言篇 + 指针笔试题
目录前言进入主题前言学过了指针相关的知识就得再加以巩固基础,今天分享的几道题希望对你能有所帮助,觉得有所收获的话也可以点个小爱心进入主题int 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;}答案:4,2.原创 2021-09-11 17:57:34 · 670 阅读 · 47 评论 -
C语言篇 + 指针进阶练习 + qsort模拟实现(回调函数思想) + 指针和数组笔试题
目录前言冒泡排序了解qsortc语言库qsort的使用qsort模拟实现前言qsort(quicksort)根据你给的比较函数给一个数组快速排序,是通过指针移动实现排序功能,关于qsort的模拟实现,本次在底层的使用的排序算法是使用的冒泡排序,那么就先来了解一下冒泡排序吧冒泡排序1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4.原创 2021-09-05 11:35:37 · 3263 阅读 · 73 评论 -
VS2017实用调试技巧
目录历史上的第一个Bug,什么是bug调试的重要性现实中的你是会是这样子的吗?调试的基本步骤1、发现程序错误的存在2、以隔离、消除等方式对错误进行定位3、确定错误产生的原因4、提出纠正错误的解决办法5、对程序错误予以改正,重新测试Debug和Release的介绍。肉眼的区别windows环境调试介绍1. 调试环境的准备2. 学会快捷键3、调试的时候查看程序当前信息查看临时变量的值设置条件断点查看内存信息查看调用堆栈查看汇编信息查看寄存器信息CTRL + F3 查找替换编程常见的错误编译型错误链接型错误运.原创 2021-08-29 14:40:33 · 1954 阅读 · 112 评论 -
C语言篇+ 指针进阶(上)
目录前言前言指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(32位平台/64位平台)。指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。指针的运算。...原创 2021-08-16 10:20:20 · 942 阅读 · 56 评论 -
C语言篇 - 数据在内存中的存储
目录一、基本数据类型介绍1.1类型的意义:1、使用这个类型开辟内存空间的大小(大小决定了使用范围)2、如何看待内存空间的视角1.2类型的基本归类:1.2.1关于char类型有符号和无符号类型的区别1.3浮点数家族:1.4构造类型:数组1.5指针类型1.6空类型:二、整形在内存中的存储1.1流程图1.2概念总结1.3实践总结1.4大小端科普知识:为什么会有大端小端呢1.5大小端总结:1.6判断机器是否是大小端三、练习一、基本数据类型介绍1.1类型的意义:1、使用这个类型开辟内存空间的大小(大小决定了.原创 2021-08-11 09:03:37 · 3539 阅读 · 42 评论 -
求变量n的二进制序列中1的个数
文章目录面试题:求变量n在内存中二进制1的个数面试题:求变量n在内存中二进制1的个数#define _CRT_SECURE_NO_WARNINGS#define F(X,Y) ((X)+(Y))#include<stdio.h>int func(int n) { int count = 0; if (n > 0) { while (n != 0) { if (n % 2 == 1) { count++; } n /= 2; .原创 2021-07-11 13:01:53 · 194 阅读 · 1 评论 -
《C陷阱和缺陷》一书中一道值得注意的题!!
目录面试题面试题请问以下程序运行的结果是什么?为什么?#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int i = 0; int arr[10] = {1,2,3,4,5,6,7,8,9,10}; for (i = 0; i <= 12; i++) { arr[i] = 0; printf("hehe\n"); } return 0;}这是我的在不同环境在运行的结果首先原创 2021-07-14 14:30:36 · 383 阅读 · 12 评论 -
指针和结构体(初级)
目录前言指针是什么总结:指针就是变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)指针和指针类型指针的关系比较指针和数组的关系二级指针指针数组野指针野指针的原因避免野指针的方法结构体结构的基础知识结构体的声明和定义创建结构体的偷懒式写法(简洁版)结构体变量定义初始化结构体嵌套结构体变量传参1、值传递2、地址传递总结:地址传递效率更高前言指针是什么在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由.原创 2021-08-05 12:35:34 · 614 阅读 · 22 评论 -
C语言三子棋 +(看完包你会)
目录前言一、三子棋游戏规则二、基本流程二、步骤1.菜单界面2、创建棋盘3、棋盘初始化4、打印棋盘5、玩家落子6、电脑落子7、判断胜负五、多文件形式game.hgame.ctest.c总结前言提示:是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。一、三子棋游戏规则子棋也叫做OOXX棋,井字棋等,用“井”字分出3×3的格子,双方轮.原创 2021-07-28 15:20:03 · 530 阅读 · 14 评论 -
详解C语言函数篇 + 递归原理
目录前言函数定义函数定义的另外一种写法函数具体使用return语句总结前言函数是什么,在我们初识C语言的时候,开始独立编写自己的一个模块,完成自己的任务,必然离不开函数,在工程中函数是一个分模块的概念,但在了解函数的基础上,进一步的认识你真的知道函数是什么吗? 如果不太清楚请腾出闲暇时间了解一下作者的博客吧,必然会让你有所收获 如果在程序中定义了一个函数,在编译时会把函数的源代码转换为可执行代码并分配一段存储空间。这段内存空间有一个起始地址,也称为函数的入口地址。函数名代表函数的起始地址。调用函数.原创 2021-07-27 21:28:43 · 946 阅读 · 13 评论