
C
文章平均质量分 50
H..b.
努力,奋斗!
展开
-
函数的调用过程(函数栈帧)
一个完整的能实现一些基本功能的程序总要或多或少的调用一些函数,但函数的具体调用过程是怎样的,从打印出来的结果来看,显然是无法得知的,这就需要对函数的调用过程有一个深入地研究。从简单的代码开始: #include<stdio.h> int Add(int x,int y) { int z=0; z=x+y; return z; } int m...原创 2018-07-25 21:06:49 · 291 阅读 · 0 评论 -
VS2017中scanf报错的解决方法
1、程序最前面使用宏:#define _CRT_SECURE_NO_WARNINGS(这种方法是最简便有效的,本人常用的);2、程序最前面使用:#pragma warning(disable:4996);3、把scanf改为scanf_s(这种方法编译器已经有所提示,但为了兼容C语言的语法,并不推荐这种方法,要一个一个去改比较麻烦);4、在新建项目时取消勾选“SDL检查”,如下图:5、若...原创 2018-11-29 17:02:45 · 3346 阅读 · 0 评论 -
结构体的内存对齐
结构体的内存对齐:一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。 例一: #include <iostream> 使用命名空间性病; ...原创 2017-07-24 11:57:30 · 642 阅读 · 0 评论 -
内存泄漏
概念:内存泄漏是指程序猿自己从堆上申请空间,没有释放后果:程序运行后置之不理,并且随着时间的流失消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都置之不理);新的内存被频繁地分配,比如当显示电脑游戏或动画视频画面时;程序能够请求未被释放的内存(比如共享内存),甚至是在程序终止的时候;泄漏在操作系统内部发生;泄漏在系统关键驱动中发...原创 2018-12-31 20:14:16 · 230 阅读 · 0 评论 -
C语言------学生成绩管理系统
利用C语言写一个简单的学生成绩管理系统,实现以下几个功能:学生信息录入学生信息修改学生信息删除学生信息查找(学号/班级)学生信息输出代码:#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;string.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#define t 100void fun(struct原创 2019-01-01 23:13:44 · 1140 阅读 · 0 评论 -
宏和函数
在程序中扩展#define定义符号和宏时,需要涉及以下几个步骤:调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换;替换文本随后被插入到程序中原来文本的位置,对于宏,参数名被它们的值替换;最后再次对结果文件进行扫描,看看他是否包含由#define定义的符号,如果是,就重复上述的处理过程。宏和函数的对比:宏做的是简单的字符串替换,而...原创 2019-02-26 00:37:17 · 680 阅读 · 0 评论 -
不使用加号求两个整数的和
1、简单直接,负负得正即可int add(int a, int b){ return a-(-b);}2、逐步给其中的一个数+1,另一个数-1(判断需要+1的数的原则是该数&lt;0),加减操作保持平衡即可注:当要相加的两个数比较大时,这种方法的效率太低int add(int a,int b){ while(a&gt;0) { a--; b++; } whi...原创 2019-03-13 21:26:08 · 1345 阅读 · 0 评论 -
深浅拷贝
先来说一下什么叫拷贝?所谓拷贝,是把一个事物变成两个的过程,我们了解到最多的拷贝方式应该就是CTRL+C/V吧,但是在C/C++中的拷贝有它独特的地方,独特在哪呢?独特在于C/C++中拷贝的事物不同:只拷贝指针而不管指针指向的内容,这种称为浅拷贝;拷贝了指针并且拷贝指针指向的内容叫做深拷贝。先来看一下浅拷贝:class Func {public: Func(const char* st...原创 2019-04-23 21:42:08 · 325 阅读 · 0 评论 -
超详细的结构体声明、定义及初始化
结构体概念结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。比如存储一个班级学生的信息,肯定包括姓名、学号、性别、年龄、成绩、家庭地址等项...原创 2019-07-31 12:41:06 · 22563 阅读 · 3 评论 -
数组的简单总结
数组小结一、一维数组1、一维数组的创建、初始化数组的创建:数组是一组相同元素的集合数组的创建方式:type_t arr_name[ ] //type_t 数组的元素类型 //const_n 常量表达式,用来指定数组的大小数组创建的实例int arr1[10]; char arr2[5]; double arr3[10]; ...原创 2018-07-03 22:22:01 · 193 阅读 · 0 评论 -
内存分区
有人说,一个学习过C语言的人,在看到代码时,看到的不是代码,而是一块又一块的内存,那么一个由C/C++编译的程序占用的内存分为哪几个部分呢?1.栈区(Stack):由编译器自动分配释放,存放的是为运行函数而分配的局部变量、函数的参数、返回的数据、返回的地址等等,它的操作方式类似于数据结构中的栈。2.堆区(Heap):一般由程序猿自己分配释放,若程序猿不释放,程序结束时可能由操作系统回收,分配方...原创 2018-11-20 00:06:50 · 302 阅读 · 0 评论 -
C语言------三子棋
三子棋是一个很简单的游戏,用C语言实现,就是实现以下功能:1.初始化界面(棋盘);2.显示界面;3.玩家和电脑交替走棋;4.在每次走棋之后判断是否有人胜利;5.判断棋盘是否已下满棋子。注:此程序玩家下棋时的坐标,就是棋盘实际上显示的坐标,并不需要再进行计算,判断是从“0”还是“1”开始,即棋盘的横纵坐标的取值范围为[1,3]。下面来看具体的实现:首先是各个函数的实现Ches...原创 2018-11-23 20:20:36 · 279 阅读 · 0 评论 -
出现一次的数、瓶盖换汽水
1、.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。 思路分析: 让数组中的每个数字都与其他的数字进行比较(包括它自身),如果遇到相等的数字,则k++完成后,k为2,因为在定义的两层循环中,i,j各自独立,在比较的过程中,a[i]还会与自身比较(a[0]与a[0]比较,第一个a[0]是a[i]的,第二个a[0]是a[j]的),所以当k == ...原创 2018-07-29 12:45:30 · 451 阅读 · 0 评论 -
素数、水仙花数、闰年、公约数、公倍数
在C语言的学习中,遇到了一些要得出特定的数的问题,下面是对这些问题进行简单的总结,可能会有不足,望指正。1、素数的判断 给出一个数,输出小于该数的全部素数 #include&amp;amp;lt;stdio.h&amp;amp;gt; int main() { int m = 0; int n = 0; int i = 0; printf(&amp;quot;输入一个数:\n&amp;quot原创 2018-07-26 20:39:57 · 374 阅读 · 0 评论 -
调整数组的奇偶,杨氏矩阵中数的查找
1、调整数组使奇数全部都位于偶数前面。 简单思路: 给出一个数组,判断数组中元素的奇偶性,从数组的两端分别开始判断,每判断一次左端+1,右端-1,当左端的值小于右端时,循环打印结果。 代码如下: #include&lt;stdio.h&gt; int main() { int i = 0; int arr[10]={1,2,3,4,5,6,7,8,9,0}; ...原创 2018-07-27 12:49:16 · 274 阅读 · 0 评论 -
注释转换的简单实现
在一个项目中,不可避免的要使用一些注释,但目前已知的有两种注释风格,分别为C语言注释风格和C++语言注释风格:C语言注释风格: /* ###### */(可以注释单行,也可以注释多行) C++语言注释风格:// ##### // ###### 但C语言的注释风格存在一定的缺陷,它不能嵌套使用,因此可将C注释风格改...原创 2018-08-09 20:59:49 · 676 阅读 · 0 评论 -
简单剖析可变参数列表
在C语言中,通过将函设置为可变参数的形式,可使函数接收多个参数,下面从源码层面对该问题进行简单剖析。先来看一段代码:#include&lt;stdio.h&gt;#include&lt;stdarg.h&gt;int ave(int n,...){ va_list arg; int i = 0; int sum = 0; va_start(arg, n...原创 2018-08-03 11:59:26 · 207 阅读 · 0 评论 -
指针数组等概念的理解
指针数组所谓指针数组实际上是一个数组,但和普通数组的区别是,普通数组存放的是整形或字符型,而指针数组是一个存放指针的数组。 举例:int *arr[10];数组指针和指针数组类似的是,都是由指针和数组组成的,但两者有着本质的区别。 指针数组是一个数组,而数组指针是一个指针。在声明一个数组时,它同时也分配了一些内存空间,用于容纳数组元素。但是在声明一个指针时,它只分配了用于容纳指针本...原创 2018-08-19 22:59:36 · 769 阅读 · 0 评论 -
string部分库函数的实现
1、模拟实现strcpy 思路分析: 源字符串的字符逐个赋值给目标字符串 代码如下:#include&amp;amp;lt;stdio.h&amp;amp;gt; #include&amp;amp;lt;assert.h&amp;amp;gt;char* my_strcpy(char *dest,const char *src){ char *ret = dest; assert(dest &原创 2018-08-17 15:56:31 · 575 阅读 · 0 评论 -
模拟实现strncpy,strncat,strncmp
下面介绍的这几个函数相比简单的字符串操作函数不同的是,它们所操作的字符串的长度有一定的限制,具体如下:模拟实现strncpy#include&amp;amp;lt;assert.h&amp;amp;gt;char *strncpy(char *dest,char *src,size_t num){ char *ret = dest; assert(dest &amp;amp;amp;&amp;amp;amp; src原创 2018-08-28 15:13:21 · 208 阅读 · 0 评论 -
C语言------扫雷
实现一个简单的扫雷游戏,必须涵盖以下几个基本的功能:雷随机分布;第一次找到的坐标不是雷的位置(如果是,则重新输入坐标);当输入坐标不是雷时,展开该坐标周围,并标明雷的数目;可以对雷的位置进行标记。想要雷的位置随机分布,需要调用rand()函数,它的头文件是#include&amp;amp;lt;stdlib.h&amp;amp;gt;;当第一次输入的坐标是雷的位置时,则重新输入。当你输入一个坐标...原创 2018-10-29 18:55:50 · 388 阅读 · 0 评论 -
const关键字
const 在实际编程中用得并不多,const 是 constant 的缩写,意为“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,如:const int a = 10;con...原创 2019-08-12 18:34:02 · 869 阅读 · 1 评论