C语言
文章平均质量分 63
该专栏为学习C语言时的一些心得与想法
发发是只呆头鹅
这个作者很懒,什么都没留下…
展开
-
C语言:预处理
1.预处理1.1#define定义标识符举个例子:#define MAX 1000 //将代码中的MAX直接替换成1000#define reg register //为 register这个关键字,创建一个简短的名字我们在#define定义标识符的时候需要在后面加上:(分号)吗?如果我们不知道该不该加的时候,不妨来尝试一下加了会有什么后果,看下面的例子:#define MAX 100;int main() { printf("%d\n", MAX); //相当原创 2021-10-09 11:00:09 · 93 阅读 · 0 评论 -
C语言:文件操作
1.为什么要使用文件在生活中,我们在电脑或手机上下载了一些东西,当我们关机再开机后,那些东西依然存在,只有当我们主动删除它的时候,它才会消失,使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。2.文件的打开和关闭及读写2.1文件指针每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息存储在结构体变量中,系统会将结构体改名为FILE,此后,我们只需要通过一个FILE类型的指针就可以访问相应的文件。2.2打开原创 2021-10-04 09:35:10 · 86 阅读 · 0 评论 -
C语言:动态内存函数
1、动态内存函数1.1 malloc和freemalloc这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。参数为开辟字节的大小,返回类型为void*,空间开辟成功指针指向该空间的地址,开辟失败后指针为NULL,所以每次开辟空间后都需要判断是否开辟成功,我们来看一个例子:int main(){ int* ptr = NULL; ptr = (int*)malloc(10 * sizeof(int)); if (NULL != ptr)//判断ptr指针是否为空 { fo原创 2021-09-27 20:26:36 · 322 阅读 · 2 评论 -
C语言:自定义类型
一、结构体1.结构体变量的定义及初始化直接上代码:struct Point { int x; int y;}p1; //创建结构体时顺便创建变量,分号一定不能掉struct Point p2; //单独创建变量struct Point p3 = { 1,2 }; //创建变量时顺便赋值struct Node { char str[20]; struct Point p; //结构体嵌套}n1 = { "abcd",{3,4} };int main()原创 2021-09-23 20:39:03 · 125 阅读 · 2 评论 -
C语言:字符串函数与内存函数
一、字符串函数1.strlen该函数用于求字符串长度,有人会问了,一个简简单单的求字符串长度的函数也需要讲吗?我们先来看一个普通的求字符串长度的例子:int main() { char str[] = "abcd"; printf("%d\n", strlen(str)); return 0;}如我们所愿,结果为4.我们再看下面这个例子:int main() { char str1[] = "abcdef"; char str2[] = "sss"; if (strlen(str原创 2021-09-16 15:49:37 · 116 阅读 · 0 评论 -
C语言:扫雷小游戏
**扫雷**设计思路:需要一个菜单界面,让玩家选择玩游戏或者退出,并且可以玩完一次继续玩;可以用两个二维数组,一个用来显示雷的分布,另一个显示周围雷的数量;设计埋雷和扫雷函数,并判断扫雷是否成功。1.主菜单int main(){ int input = 0; srand((unsigned)time(NULL)); do { menu(); printf("请输入:"); scanf("%d", &input); switch (input) {原创 2021-08-15 17:02:21 · 5172 阅读 · 0 评论 -
C语言:三子棋游戏
说到三子棋,我想大家一定不陌生吧,它也是我童年中的一部分,今天我们用C语言来实现一下简易版的三子棋。首先,介绍一下游戏规则:在一个九宫格上进行下棋;玩家两名,双方先后落子;若在一条直线上有三颗同一玩家的棋子,则该玩家赢,若棋盘下满也没有出现三颗棋子在一条直线上,则为平局。设计思路如下:1.用do…while循环可以保证玩完一把还能接着玩,玩家可以自行选择继续玩还是退出。2.用一个3x3的二维数组来存放玩家和电脑下的棋子,再进行判断输赢。3.进行游戏的棋盘如下:代码如下:头文件gam原创 2021-08-14 13:48:35 · 129 阅读 · 0 评论 -
C语言:数据的存储
1.数据的类型在C语言中,基本数据类型有char、short、int、long、long long、float、double,那有没有字符串类型呢?答案是没有,哈哈哈。在整形中,每个类型可分为有符号数和无符号数,即signed和unsigned,在vs2019中,默认的都是signed类型,所以想要表示无符号数时必须在前面加上unsigned。除了这些类型,还有指针类型、空类型以及可以自己构造类型,如:struct、enum、union。2.整形在内存中的存储在了解整形在内存中的存储之前,我们先来原创 2021-08-09 17:20:30 · 368 阅读 · 0 评论 -
C语言:函数栈帧
1.什么是函数栈帧在C语言中,每一个正在运行的函数都有一个栈帧与其对应,栈帧中存储的是该函数的返回地址和局部变量。从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等。2.函数栈帧的创建与销毁在调用函数时,会为该函数在栈上开辟一块空间,在该函数运行的过程中,寄存器ebp保存的是栈底地址,寄存器esp保存的是栈顶地址。而且还应该明确一点,esp和ebp寄存器一次只能存储一个地址,所以,任何时候,这一对指针都会指向同一个函数的栈帧结构。并且ebp一般由系统改变它的原创 2021-08-07 18:19:12 · 195 阅读 · 0 评论 -
初识结构体
可能有点繁琐,但还请你能耐心看完~~在谈什么是结构体之前,我们先来说说为什么会有结构体这个东西,在C语言中,如果我们想创建一个整形变量,那我们可以用int,想创建一个字符变量,可以用char,想创建一个小数,可以用float或者double,但是如果我们想描述一个人,或者一本书,该怎么办呢?就拿人来说吧,描述一个人,需要他的姓名、性别、年龄等等,这些变量不是同一个类型的,所以我们无法用单纯的int或者double等等关键字来创建,所以我们需要一种变量类型可以满足各种类型的变量,于是乎结构体就来但此重任了。原创 2021-08-04 15:52:34 · 123 阅读 · 0 评论 -
数组名是首元素地址吗?
数组名确实是首元素地址,但是有两个例外。1.sizeof(数组名),这里的数组名不是首元素地址,是表示整个数组。上代码:int arr[10] = { 0 }; printf("%d\n", sizeof(arr));打印结果为:如果是首元素的地址,在32位平台地址的大小是4个字节,64位平台地址大小为8个字节,但是这里的输出结果是40字节,所以sizeof(数组名)这种情况,数组名代表的是整个数组。2.&数组名,这里的数组名也表示的是整个数组。上代码:int arr[10]原创 2021-08-02 16:41:01 · 6072 阅读 · 4 评论 -
C语言中交换两数的方法
在学习C语言的过程中,很多地方都会用到交换两个数这一步,下面来介绍一下交换两数的常见的3种方法:1.采用一个临时变量,这也是我们最常用的一种方法,直观且简单,其代码如下: int a = 3; int b = 5; int temp = 0; temp = a; a = b; b = temp;2.不创建临时变量,也可以完成交换,其代码如下: int a = 3; int b = 5; a = a + b; b = a - b; a = a - b;这种方法虽然可以完成交换,原创 2021-08-01 12:04:14 · 5965 阅读 · 2 评论 -
Static关键字的三种用法
在C语言中,static关键字有3种常见的使用方法:1.static修饰局部变量2.static修饰全局变量3.static修饰函数原创 2021-08-01 11:46:06 · 1337 阅读 · 0 评论