![](https://img-blog.csdnimg.cn/e21434e2c11b4970b2acf940032bc37b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言
文章平均质量分 92
C语言相关知识
野猪佩奇`
双非本科,大三在读,C/C++ 领域新星创作者,阿里云专家博主,记录学习心得,分享学习经验。
展开
-
程序员内功心法之函数栈帧的创建和销毁
目录1、本节目标2、相关寄存器3、相关汇编指令4、什么是函数栈帧5、什么是调用堆栈6、函数栈帧的创建和销毁(1)、main函数栈帧的创建与初始化(2)、main函数的核心代码(3)、Add函数的调用过程(4)、Add函数栈帧的销毁(5)、调用完成7、对开篇问题的解答1、本节目标C语言绝命七连问,你能回答出几个?局部变量是如何创建的?为什么局部变量不初始化其内容是随机的?有些时候屏幕上输出的"烫烫烫"是怎么来的?函数调用时参数时如何传递的?传参的顺序是怎样的?函数的形参和实参的关系是什么?原创 2022-05-01 15:02:16 · 5820 阅读 · 52 评论 -
深析C语言的灵魂 -- 指针
指针是内存中一个最小单元的编号,也就是地址。我们一般口语中说的指针,通常指的是指针变量,也就是用来存放内存地址的变量。原创 2022-07-27 08:41:44 · 1548 阅读 · 26 评论 -
C语言的三个经典题目:三步翻转法、杨氏矩阵、辗转相除法
三步翻转法是C语言中用来求旋转字符串的一种进阶方法,我们以具体例题对其进行介绍。例:求一个字符串左旋n个字符后得到的新字符串普通方法实现三步翻转法实现杨氏矩阵的介绍例:有一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的。在这样的数组中查找一个数字是否存在。要求: 时间复杂度小于O(N)。代码实现代码完善欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式是:注:最小公倍数的计算公式如下:假如需要求 1997 和 615 两原创 2022-07-13 08:11:43 · 1221 阅读 · 24 评论 -
【C语言】文件相关操作
在日常生活中我们所说的文件就是电脑C盘、D盘上的各种文件;但是在程序设计中,我们一般会从文件的功能的角度把文件分为两种程序文件和数据文件。程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。在本节中我们学习的就是数据文件文件名是一个文件的唯一标识,用户可以据此来对不同文件进行识别和引用。......原创 2022-07-20 08:53:23 · 699 阅读 · 23 评论 -
程序员内功心法之程序环境和预处理
一个 .c 程序是如何一步步变为 .exe 程序的?C语言有哪些使用又有趣的预处理操作?这篇文章为你解答。原创 2022-07-25 09:16:07 · 1185 阅读 · 48 评论 -
【C语言】深度剖析数据在内存中的存储
C语言中有哪些数据类型:数据类型的意义:我们知道,一个变量的创建是要在内存中开辟空间的,而且所开辟空间的大小是根据不同的类型决定的,那么,数据在所开辟内存中到底是如何存储的呢?接下来我们探讨这个问题。而计算机内部存放的就是数据的补码,原因如下:注:为什么说补码与原码相互转换运算过程是相同的呢,因为对于一个负数来说,原码取反加一可以得到补码,同样补码取反加一也可以得到原码,二者转换的逻辑是相同的,所以不需要额外的硬件电路。我们可以看到,在计算机内部存储的确实是数据的补码,但是我们也发现,数据在内存中好像是原创 2022-06-04 10:19:48 · 929 阅读 · 49 评论 -
【C语言】自定义类型详解:结构体、枚举、联合
C语言的数据类型包括基本类型(内置类型)、构造类型(自定义类型)、指针类型和空类型(void),其中基本类型就是我们常见的整形、浮点型,而自定义类型则包括数组、结构体、枚举、联合(共用体),数组我们已经非常熟悉了,今天我们主要学习自定义类型中其他几种类型结构体、枚举以及联合。结构体定义变量一共有两种方式,一种是在进行结构体声明的同时定义结构体变量,另一种是利用结构体类型来定义结构体变量。intx;inty;}p1;//声明类型的同时定义变量p1structPointp2;.........原创 2022-07-15 10:15:48 · 949 阅读 · 25 评论 -
指针和数组笔试题解析
下面代码的输出结果是什么:(32位平台下)解析:总结:1、数组名的意义2、指针类型的意义下面代码的输出结果是什么:(32位平台下)解析:2、题型二下面代码的输出结果是什么:(32位平台下)解析:3、题型三下面代码的输出结果是什么:(32位平台下)解析:总结:1、数组名的意义2、指针类型的意义3、strlen的用法下面代码的输出结果是什么:(32位平台下)解析:总结:1、数组名的意义2、指针类型的意义3、二维数组相关下面程序的输出结果是什么:(32位平台下)解析:下面程序的输出结果是原创 2022-07-06 15:01:49 · 1161 阅读 · 48 评论 -
字符串函数、字符函数、内存函数的使用及其模拟实现
函数功能字符串长度,求一个字符串中字符的个数(不包含’\0’)。函数参数函数使用模拟实现(初阶)模拟实现(进阶)注意事项函数功能字符串拷贝,把一个字符串里面的内容拷贝到另一个字符串中去(包括’\0’)。函数参数函数使用模拟实现(初阶)模拟实现(进阶)注意事项函数功能字符串追加,在一个字符串的末尾追加另外一个字符串(包括’\0’)。函数参数函数使用模拟实现(初阶)模拟实现(进阶)注意事项函数功能字符串比较,以字节为单位比较两个字符串的大小函数参数函数返回值函数使用模拟实现注意事原创 2022-07-11 08:12:12 · 615 阅读 · 35 评论 -
【C语言】动态内存管理
在C99标准中,结构体中的最后一个元素允许是未知大小的数组,这就是柔性数组;柔性数组只能在结构体中使用;结构体中的柔性数组成员前面必须至少有一个其他成员;sizeof计算含柔性数组成员的结构体大小时,不会包含柔性数组的大小;包含柔性数组成员的结构体需要用malloc函数进行动态内存分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小;当我们用为柔性数组成员开辟的空间大小不合适时,我们还可以使用realloc函数对其进行扩容,真正的做到“柔性”;structS{...原创 2022-07-18 08:43:12 · 1732 阅读 · 47 评论 -
C语言小项目 -- 通讯录(静态版+动态版+文件版)
我们这里设计的通讯录应包含如下功能静态版通讯录内部联系人的增删查改、对联系人按姓名进行排序、显示通讯录中所有联系人、清空通讯录、退出通讯录;动态版动态版的通讯录与静态版通讯录功能一样,但是内部实现由固定大小改为动态增容;文件版文件版的通讯录与动态版功能与实现方式一样,但是会在程序退出时把联系人信息保存在文件中,在程序运行时把文件中的联系人信息加载到通讯录中;...原创 2022-07-22 10:53:40 · 10025 阅读 · 32 评论 -
qsort 函数的使用及其模拟实现
qsort 函数的使用以及基于快速排序思想的对冒泡排序的改进原创 2022-07-29 08:53:43 · 349 阅读 · 11 评论 -
C语言关键字详解(二) 带你全面了解 static 关键字
目录:一、前言大家好,欢迎来到C语言深度解析专栏—关键字详解第二篇,在本篇中我们将会对static关键字进行详细介绍,其中要求我们掌握我上一篇中所讲到的全局变量、局部变量、作用域以及生命周期的概念,如果对这几个概念比较模糊的同学可以先移步我上一篇博客,下面是博客链接。关键字详解第一篇二、认识多文件1、多文件的创建这里我先介绍一下头文件的创建:头文件的创建与.c文件的创建十分相似,仅仅是在选择的时候把c++文件改成.h而已.h:我们称之为头文件,一般包含函数声明,变量声明,宏定义,头文原创 2022-03-16 20:22:57 · 1301 阅读 · 21 评论 -
C语言关键字详解(四)带你全面了解 const 关键字
目录一、前言二、const 关键字1、const 关键字总体阐述2、const 修饰变量3、const 修饰数组4、const 修饰指针5、const 修饰函数三、总结一、前言大家好,欢迎来到C语言深度解析专栏—C语言关键字详解第四篇,在本篇中我们将会介绍C语言当中的另一个重要的关键字 const ,此关键字在面试中经常被问到,希望大家能够对它有一个全面的了解二、const 关键字1、const 关键字总体阐述const 是 constant 的缩写,是恒定不变的意思,也翻译为常量、常数等。原创 2022-03-23 20:58:43 · 2725 阅读 · 21 评论 -
C语言关键字详解(五)带你全面了解 volatile 关键字
目录前言一、最易变的关键字—volatile1、volatile 总体阐述2、CPU的运算过程前言大家好,欢迎来到C语言深度解析专栏—C语言关键字详解第五篇,在本篇中我们将会介绍C语言当中的另外两个重要的关键字 volatile 和 extern ,相信大家在看完这篇博客后会对 volatile 和 extern 这两个关键字的用法及注意事项有一个系统、全面的认识。一、最易变的关键字—volatilevolatile 是易变的、不稳定的意思。很多人根本就没见过这个关键字,不知道它的存在。也有很原创 2022-03-25 23:40:43 · 9671 阅读 · 48 评论 -
C语言关键字详解(一) auto、register关键字
目录#关键字总体介绍##最宽宏大量的关键字——auto# ##变量的分类原创 2022-03-14 15:28:31 · 3167 阅读 · 14 评论 -
C语言关键字详解(三)数据类型与sizeof关键字
目录一、前言二、数据类型1、数据类型有哪些2、为什么要有数据类型3、如何看待数据类型三、sizeof -- 计算不同类型变量开辟空间的大小1、内置类型开辟的空间大小2、自定义类型开辟的空间大小四、对sizeof 的进一步理解1、sizeof 为什么不是函数2、sizeof 的其他使用一、前言大家好,欢迎来到C语言深度解析专栏—C语言关键字详解第三篇,在本篇中我们将会介绍C语言当中的数据类型,并由此引出C语言当中的另外一个重要的关键字 — sizeof .二、数据类型1、数据类型有哪些C语言的原创 2022-03-18 23:55:01 · 1754 阅读 · 21 评论 -
程序员必备的VS调试技巧
文章目录一、什么是bug二、什么是调试及调试的重要性1、什么是调试2、调试的基本步骤3、Debug和Release的介绍三、Windows下VS常用调试快捷键四、VS常用调试技巧1、查看临时变量的值2、查看内存信息3、查看调用堆栈4、查看反汇编5、查看寄存器五、如何写出好(易于调试)的代码1、什么是高质量的代码2、常见的代码技巧3、优秀代码示范6、编程中常见的错误1、编译型错误2、链接型错误3、运行时错误一、什么是bugBug一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺原创 2022-05-19 11:48:09 · 5799 阅读 · 86 评论 -
移位运算、位运算、逻辑运算相关知识点及笔试题
hello,大家好,今天我为大家带来的是移位运算、位运算以及逻辑运算,为了方便大家理解和掌握这三个知识点,我会在文章中附上一系列的图解和练习题,Let is go ! 🚀🚀🚀@TOC🚀原码、反码、补码我们知道计算机只能识别二进制数据,所以整数要存入计算机中就必须转化为相应的二进制数,同时整数在内存中的二进制表现形式有三种,分别是原码、反码和补码。在内存中,计算机对数据进行运算的时候用的都是整数的补码。对于正整数来说:原码 = 反码 = 补码;对于负整数来说:原码符号位不变、其他位按位取反得.原创 2022-05-13 09:08:22 · 1049 阅读 · 79 评论 -
C语言小项目 -- 扫雷游戏完整代码(递归展开 + 选择标记)
大家好,今天我们将一起用C语言实现一个经典小游戏 – 扫雷,Let is go !文章目录🏡游戏介绍🏡游戏整体框架🏡游戏具体功能及实现🪁1、雷盘的定义🪁2、雷盘的初始化🪁3、布置雷🪁4、排查雷🪁5、递归式展开一片🪁6、获取周围雷的个数🪁7、标记特定位置🪁8、打印雷盘🏡游戏完整代码🗝️1、test.c🗝️2、game.h🗝️3、game.c🏡游戏效果展示🏡游戏介绍扫雷游戏相信大家都玩过,上图就是一个网页版的扫雷,它的规则是玩家选择一个方格,若此方格没有地雷,那么该方格会显示与它相邻的八个方格中雷的原创 2022-05-10 18:31:52 · 13413 阅读 · 66 评论 -
C语言经典递归题目 -- 青蛙跳台阶问题
目录🍅题目描述🍅画图分析🍅思路分析🍅代码实现🍅题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。🍅画图分析和上篇文章讲到的汉诺塔问题一样,我们还是由简到繁,从最简单的情况开始考虑:只有一级台阶的情况:只有一级台阶的时候,显然只有一种跳法。有两级台阶的情况有两级台阶的时候,青蛙有两种跳法。跳一阶,在跳一阶:直接跳两阶:有三级台阶的情况:有三级台阶的时候,青蛙有三种跳法。跳一阶,再跳一阶,再跳一阶:原创 2022-05-06 22:39:05 · 1126 阅读 · 47 评论 -
C语言经典递归题目 -- 汉诺塔问题
目录题目描述画图分析思路总结代码实现总结题目描述汉诺塔问题起源于一个传说传说,在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。我们现原创 2022-05-05 07:31:08 · 1544 阅读 · 59 评论 -
C语言小项目 -- 五子棋小游戏(通用版)
目录1、game.h2、test.c3、game.c4、游戏功能详解(1)、棋盘初始化(2)、棋盘的打印(3)、玩家下棋(4)、电脑下棋(5)、判断游戏输赢(6)、判断棋盘是否满了1、game.hgame.h:自定义头文件,用于:库函数头文件的包含符号与结构的声明函数的定义//防止头文件被重复包含#pragma once//头文件的包含#include<stdio.h>#include<stdlib.h>#include<time.h>/原创 2022-04-28 16:26:57 · 10650 阅读 · 81 评论 -
【C语言】getchar 函数的正确使用
目录一、getchar 函数二、缓冲区1、什么是缓冲区2、为什么要存在缓冲区3、缓冲区的类型4、缓冲区的刷新三、getchar 函数的正确使用1、getchar 的换行问题2、getchar 与 scanf 的混合使用一、getchar 函数从上面的介绍来看,我们要正确使用getchar函数,首先得了解什么是缓冲区。二、缓冲区1、什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。原创 2022-04-17 15:20:26 · 19955 阅读 · 54 评论 -
如何写出高质量的代码 -- 给所有编程学习者的一个建议
《高质量C/C++编程指南》原创 2022-04-19 08:11:38 · 2832 阅读 · 54 评论 -
初识C语言第三话之指针与结构体
目录本节目标初识指针1、内存与地址2、变量的地址3、指针变量4、指针的使用5、指针变量的大小初识结构体1、什么是结构体2、结构体的定义3、结构体的使用本节目标理解内存与地址的相关概念,初步掌握指针的定义与使用,理解结构体的概念,掌握其基本的使用及访问方法。初识指针1、内存与地址内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。*所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。*同时为了能够有效的访问到内存的每个单元,就给内存单元进原创 2022-04-13 11:19:28 · 1468 阅读 · 30 评论 -
初识C语言第二话之选择、循环、函数、数组与操作符
大家好,这里是程序员学习日记目录本节目标1、选择语句2、循环语句3、函数4、数组5、操作符本节目标初步认识C语言中的选择语句、循环语句、函数、数组与操作符。1、选择语句如果你好好学习,校招时拿一个好offer,走上人生巅峰。如果你不学习,毕业等于失业,回家卖红薯。这就是选择!#include<stdio.h>int main(){ int a = 0; printf("1:好好学习,拿大厂offer 2、宿舍摆烂,毕业即失业\n\n"); print.原创 2022-04-11 16:23:41 · 1099 阅读 · 20 评论 -
深入理解C语言static关键字的三个作用
目录static修饰局部变量static 修饰全局变量static 修饰函数总结static修饰局部变量图一:test 函数里面定义的 a 是局部变量,局部变量在栈区上开辟空间,栈区的使用特点是进入变量的生命周期时自动为其开辟空间,离开变量的生命周期时自动销毁对应空间,所以这里每次调用 test 函数时 a 都会被重新定义并初始化为0,所以屏幕上打印的是10个1;图二:我们把 a 用 static 修饰后发现屏幕打印的是1到10,就好像每次调用完 test 函数后 a 并没有被销毁,而是继续使原创 2022-04-11 11:45:29 · 6136 阅读 · 50 评论 -
【C语言】一次性解决visual studio中scanf函数不安全报错问题
【C语言】VS中scanf函数不安全问题 -- 一次性永久解决scanf不安全问题 超多超详细scanf函数不安全问题解决办法原创 2022-01-19 20:40:23 · 26284 阅读 · 41 评论 -
初识C语言第一话之数据类型、常量变量、字符串、转义字符与注释
大家好,这里是程序员学习日记目录前言1、什么是C语言2、第一个C语言程序3、数据类型4、常量与变量常量变量定义变量的方法变量的分类变量的使用变量的作用域和生命周期5、字符串+转义字符+注释字符串转义字符注释前言大家好,欢迎来到《C语言初阶》第一篇,本篇我们将会为大家简单介绍什么是C语言、第一个C语言程序、数据类型、常量变量、字符串、转义字符、注释,让大家从零基础整体了解C语言。1、什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式.原创 2022-04-03 17:22:39 · 5088 阅读 · 29 评论 -
致对未来迷茫的你
职业生涯规划目录一、前言二、个人介绍三、大学生应该如何度过大学四年四、我们到底应该如何学习?1、程序员的青春是码出来的2、学会取舍、挤时间学习3、学会利用现代资源4、学习路线的推荐5、博客和github/gitee的重要性五、我的博客一、前言相信很多大一大二甚至是大三的小伙伴对自己的未来都是迷茫的,不知道自己想要什么,不知道自己未来将会从事什么工作,没有精确的学习目标,整日只是与室友、与同学一起随波逐流,沉浸在短暂、低俗的快乐中,荒废光阴;我们时常会痛恨自己的无能、颓废,我们.原创 2022-04-01 14:56:12 · 6475 阅读 · 43 评论