C语言
小-豪-豪
这个作者很懒,什么都没留下…
展开
-
库函数的模拟实现
模拟实现strlen://方法1:计数器方式int my_strlen(const char *str){ int count = 0; assert(str); while (*str) { ++count; ++str; } return count;}//方法2:不能创建零时变量计数器int my_strlen(const char *str){ assert(str); if (*str == '\0') return 0; else return m原创 2020-07-06 22:19:20 · 117 阅读 · 0 评论 -
C语言输入单字符避免回车的四种方法
前几天在编写2048小游戏时遇到了输入单字符会受回车影响的问题,为了解决这个问题,我在网上找了一些总结。1、在scanf()中使用’\n’屏蔽回车符号。scanf("%d\n", &n);scanf("%c", &c);2.在scanf()格式串最前面添加空格,屏蔽回车字符。scanf("%d", &n);scanf(" %c", &c);//%c 前面...原创 2020-01-16 19:52:50 · 3999 阅读 · 0 评论 -
用C语言写一个三子棋小游戏(用VS2010实现)
学习C语言已经有一段时间了,写一个小游戏来对前面学过的知识巩固一下。原创 2019-08-18 23:20:26 · 535 阅读 · 1 评论 -
C语言操作符总结
在这里对C语言操作符进行一个简单的总结。原创 2019-08-19 19:53:15 · 130 阅读 · 0 评论 -
用C语言写一个扫雷小游戏(用VS2010实现)
1.第一次踩不到雷2.如果扫的位置不是雷,那么可以展开一片相关的非雷位置原创 2019-08-23 15:21:57 · 2644 阅读 · 0 评论 -
用C语言写一个三子棋小游戏(用VS2010实现,加强版)
前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大。今天对那个程序做了两点改进:1.现在可以实现在任意大小的棋盘上下棋了。2.因为棋盘可能变大,为了玩家方便确定坐标,加了行和列的标号。原创 2019-08-25 21:30:47 · 309 阅读 · 0 评论 -
用C语言实现一个通讯录(用VS2010实现)
实现一个通讯录; 通讯录可以用来存储联系人人的信息,每个人的信息包括: 序号、姓名、性别、年龄、电话、住址 通讯录为用户提供的操作: > 0.退出> 1.添加联系人信息 > 2.删除指定联系人信息 > 3.查找指定联系人信息 > 4.修改指定联系人信息 > 5.显示所有联系人信息 > 6.清空所有联系人 > 7.以名字排序所有联系人 > 8.保存联系人到文件 9. 加载联系人原创 2019-08-31 16:48:57 · 7113 阅读 · 1 评论 -
自定义类型:结构体,枚举,联合(共用体)
1.结构体结构体的声明结构的基础知识:结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的声明:struct tag{ member-list;//成员列表}variable-list;//变量列表举个例子(描述一个学生):struct stu{ char name[20];//名字 int age;//年龄 char sex[5];//性...原创 2019-09-01 16:57:15 · 311 阅读 · 0 评论 -
C语言文件操作
什么是文件,与文件相关的操作函数,文件结束的判定原创 2019-09-02 18:10:00 · 203 阅读 · 0 评论 -
为什么C++可以函数重载但是C语言不可以?
函数重载的概念:函数重载是指在同一作用域中声明多个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同。常用来处理实现功能类似数据类型不同的问题。为什么C++可以函数重载但是C语言不可以?int ADD(int left, int right);int main(){ ADD(1, 2); return 0;}请看上面的C语言代码,它的执行结果如下:由于...原创 2019-11-26 14:48:30 · 403 阅读 · 0 评论 -
用C语言写一个2048小游戏(用VS2013实现)
游戏简介执行2048程序,进入游戏后屏幕打印如下图所示:玩家通过u、d、l、r、q来控制游戏:u ————>> 上d ————>> 下l ————>> 左r ————>> 右q ————>> 退出 最高分数用来记录游戏中的最大数,当最高分数达到2048的时候,屏幕显示“You Win!”,这个时候玩家可以通过“q”来退...原创 2020-01-11 13:48:04 · 2021 阅读 · 0 评论 -
用C语言写一个2048小游戏(用VS2013实现,优化版)
前几天写了一个2048小游戏,但是感觉不太满意,因为只有数字没有棋盘,所以看起来不太友好。我后来对打印游戏数据函数做了改进,使界面变得更加美观。效果如下图所示:修改后的showGame()代码如下:/** 函数名:showGame* 功能:显示游戏界面* 参数:需要显示的游戏数据* 返回值:无*/void showGame(int data[N][N]){ int x = ...原创 2020-01-15 10:49:08 · 470 阅读 · 0 评论 -
C语言中怎么使用户不用按回车键,输入字符后就直接调用函数
在编写2048小游戏时,遇到了“每次输入都需要按回车键的问题”,于是,我总结了一下不用按回车键就可读取输入的方法。1、在windows下的编译器,如果支持conio.h的话,可以使用_getch()函数。#include <stdio.h>#include <conio.h>int main(){ char ch; ch = _getch(); if (ch...原创 2020-01-17 21:37:09 · 8678 阅读 · 4 评论 -
const char *p,char const *p和char *const p区别
const char *p;先看p,根据优先级它和*结合,是指针,指向char类型,但是char前面有一个const修饰,所以p所指向的内容为const类型不可修改。char const *p;由于没有const *的运算(const不可能修饰*),若出现const *的形式,则const实际上是修饰前面的,所以char const *p和const char *p一样。char ...原创 2020-02-20 17:50:57 · 434 阅读 · 0 评论 -
strcpy()函数、memset()函数、memcpy()函数和memmove()函数
1、memset()函数void *memset(void *dest, int c, size_t count);功能:从dest位置开始将后面的count个字节赋值为字符c。参数: dest:赋值位置的指针 c:要赋的字符 count:要赋的字符的个数返回值:例子:#include <memory.h>#include <stdio.h>i...原创 2020-02-25 17:15:05 · 216 阅读 · 0 评论 -
结构体内存对齐
计算结构体大小是一个非常热门的考点:结构体内存对齐。先来看下面这段代码:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>struct S1{ char c1; int i; char c2;};struct S2{ char c1; char c2; int i;};struct S3{ do...原创 2020-03-16 18:26:27 · 94 阅读 · 0 评论 -
32位系统和64位系统各数据类型对应的字节数
一)64位系统和32位有什么区别?1、64bit CPU拥有更大的寻址能力,最大支持到2^64内存,而32bit只支持4G内存当然2^64只是理论值,实际中不可能用到这么大的内存,目前64位windows系统最大只支持128G,而当前主流主板只能加到16G。2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的...原创 2020-03-16 19:46:27 · 2983 阅读 · 0 评论 -
main函数的三个参数
我们平时写程序时main函数是省略参数的,或者是省略部分参数,其实main函数是有三个参数的。int main(int argc, char *argv[], const char *envp[])argc:int 类型,用于存放命令行参数的个数(包括函数名)。argv[]:char数组型,每个元素都是一个字符指针,指向一个字符串,即命令行中的每一个参数。envp:char数组型,这个数...原创 2020-03-16 20:33:55 · 834 阅读 · 0 评论 -
深度剖析数据在内存中的存储
数据类型介绍类型的基本归类:整形家族:char unsigned char signed charshort unsigned short (int) signed short (int)int unsigned int signed intlong unsigned long (int) signed long (int)//小括号中的内容表示可以省略浮点数家族...原创 2020-03-18 15:54:33 · 211 阅读 · 0 评论 -
编译和链接的过程
转载链接:https://blog.csdn.net/guaiguaihenguai/article/details/81160310本来想总结一下的,后来发现这篇博客讲的非常好,还是转载一下吧。程序要运行起来,必须要经过四个步骤:预处理、编译、汇编和链接。接下来通过几个简单的例子来详细讲解一下这些过程。对于上边用到的几个选项需要说明一下。使用 gcc 命令不跟任何的选项的话,会默认执...转载 2020-03-18 20:42:37 · 1532 阅读 · 0 评论 -
C语言整形提升
这几天做题发现整形提升的问题忘掉了,所以在这里总结一下。整形提升是C程序设计语言的一项规定: 在表达式计算时,各种整形首先要提升为int类型,如果int类型不足以表示则要提升为unsigned int类型,然后执行表达式的运算(CPU是对补码进行运算的)。整型提升的意义在于: 表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度...原创 2020-03-20 11:55:59 · 275 阅读 · 0 评论 -
定义一个long long类型,用%d打印的结果
这几天复习了一下整形提升,正好发现一个令我非常困惑的问题:#include <stdio.h>int main(){ long long a = 1, b = 2, c = 3; printf("%lld %lld %lld\n", a, b, c); printf("%d %d %d\n", a, b, c); return 0;}输出结果:那么问题来了,%l...原创 2020-03-20 14:15:52 · 7256 阅读 · 2 评论 -
程序地址空间
上图也可以进一步细分:1.栈区: 栈又叫堆栈,通常存放程序临时创建的非静态局部变量(即函数大括号中定义的局部变量)以及函数调用时的参数,调用后的返回值等。由编译器自动分配释放。栈是向下增长的。 栈具有“小内存、自动化、可能会溢出”的特点。栈顶的地址和栈的最大容量一般是系统预先规定好的,通常不会太大。由于栈中主要存放的是局部变量,而局部变量的占用的内存空间是其所在的代码段或函数段结束时由系...原创 2020-03-21 11:36:50 · 331 阅读 · 0 评论 -
求最大公约数以及最小公倍数
最大公约数(greatest common divisor因子, GCD)。最小公倍数(least common multiple倍数, LCM)。1.群举法首先给出两个数a和b,从两数较小的数开始,找到满足a和b同时可以被其整除的最大的约数。#include <stdio.h>int gcd(int a, int a){ int temp = 0; temp = (a...原创 2020-03-27 20:19:37 · 1967 阅读 · 0 评论