![](https://img-blog.csdnimg.cn/20210716005424648.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C_learning
文章平均质量分 85
学习历程
丶chuchu丶
无限进步
展开
-
程序的编译
写了这么多程序,那么程序到底是如何编译的呢?每一个源文件都会经过编译与链接的过程,最终才会展示出来。过程大致如下:源文件先经过编译器编译为目标文件,最后由链接器将库文件和目标文件结合,成为可执行文件。接下来,我们来探讨一下编译与链接的具体过程。目录一、编译1.1 预编译1.2 编译1.3 汇编二、链接三、运行一、编译编译可以分为三个阶段:预编译、编译、汇编。为了方便演示,这里使用Linux环境演示。1.1 预编译这个过程主要由三...原创 2021-10-14 11:16:45 · 2730 阅读 · 10 评论 -
C语言文件操作(上)
这节来探讨一下C语言里的文件操作。原创 2021-09-27 09:34:21 · 80 阅读 · 0 评论 -
动态内存管理
我们知道,当创建数组时,空间是固定的,写多少就分配多少空间。那如果我们想要动态分配空间呢?一、动态内存的函数1.1 malloc 函数这是最经典的动态分配函数,参数就是你想要分配的空间大小至于void* ,别忘了强转这个好用的功能。最后别忘了,引头文件<stdlib.h>来个示例,比如我想动态分配一个40比特大小的空间int* a = (int*)malloc(40);但是这里需要一提的是,动态分配有可能会失败,如果你分配了太大的空间,会导致分..原创 2021-09-24 15:15:33 · 77 阅读 · 0 评论 -
结构体、枚举与联合
这三个自定义类型,平时也很常见,需要重点掌握。一、结构体1.1 结构体声明描述一个学生,不可能简单一个类型解释清楚、这是就需要结构体来描述。struct Student{ char name[5];//姓名 char sex[5];//性别 int age;//年龄 char id[20];//学号};//分号不可少1.2 特殊声明在结构体声明时,可以省去结构体标签,即匿名结构体。struct{ int a; char b; floa.原创 2021-09-20 18:27:03 · 68 阅读 · 2 评论 -
内存函数即其模拟实现
相对于字符串函数,内存函数像是它们的升级版,不局限于字符类型,任何类型都可使用。让我们来看看常见的内存函数:memcpy, memmove, memcmp1. memcpy(内存复制)此函数能将源地址内的num个元素放入目标地址中,任何类型都可以。用法如下:int main(){ int a1[10] = {1,2,3,4,5,6,7,8,9,10}; int a2[20] = { 0 }; memcpy(a2, a1, 10 * sizeof(int)); int..原创 2021-09-17 11:37:11 · 205 阅读 · 4 评论 -
字符串函数介绍与模拟实现
C语言库中有很多函数,其中字符串函数是比较常用的一块,需要我们去掌握。1. strlen(求字符串长度)这个函数就是求一个字符串的长度。注意它是不算'\0'的,即以'\0'为结束标志,计算其之前的字符串长度,但不能没有'\0'.让我们来一个有趣的例子:int main(){ if (strlen("abc") - strlen("abcdef")) printf("hehe"); else printf("haha"); return 0;}以上的代码乍..原创 2021-09-15 19:02:45 · 185 阅读 · 13 评论 -
详解C语言指针
指针可谓是C语言的灵魂,为了巩固好这块知识,特地来整理成一篇博客,供大家参考。目录一、简单归纳二、指针详解1、字符指针2、指针数组3、数组指针3.1 数组指针定义3.2 &arr与arr3.3 数组指针的使用4、数组参数、指针参数4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参5、函数指针6、函数指针数组7、指向函数指针数组的指针一、简单归纳首先记住这句话:从变量名处起,根据运算符优先级..原创 2021-08-16 23:19:27 · 105 阅读 · 3 评论 -
数据在内存中的储存
我们一直在接触数据,但是声明一个数据又是如何在内存中存储的呢?目录一、整型1、整型的归类2、整型在内存中的存储原码、反码、补码二、浮点型三、练习一、整型1、整型的归类数据可以分为整型与浮点型,在整型中,又可细分为以下几类:( [ ] 中的内容可以不写)2、整型在内存中的存储int a = 10;我们都知道,int 类型在内存中占4个字节的空间。但是空间又是如何分配的呢,下面要引到新知识。原码、反码、补码这三个是整型的二进...原创 2021-08-10 16:36:21 · 175 阅读 · 1 评论 -
函数栈帧的创建与销毁
学C语言时,局部变量、函数运用广泛但他们的底层原理如何,听我细细道来。一、预备知识1.汇编语言简介在这之前,需要先了解一下汇编语言的知识。凡是一门高级语言,机器不可能直接识别,会通过编译器转换为低级语言。汇编语言正是这样一门低级语言。可它一点也不低级,所有编译语言最终都要经过它之手才可被机器识别。2.寄存器汇编语言中,有个很重要的概念叫作寄存器。寄存器,说白了就是用来存储数据、地址的,它的优先级最高,CPU优先使用其内部数据。寄存器依靠名称来区分数据,而不通过.原创 2021-08-07 18:54:26 · 171 阅读 · 0 评论 -
C语言实现简易三子棋
这篇文章主要介绍了C语言实现三子棋的步骤和代码详解,希望能对大家有所帮助。一、基本流程1.原创 2021-07-29 14:17:14 · 86 阅读 · 0 评论 -
C语言实现随机数
本文介绍一种C语言随机数生成的办法,希望对大家有所帮助先介绍一个东西,叫做时间戳这长长的一串数字就是时间戳。如图所示,它能转换成一个特定的时间。由于时间在不断流逝,时间戳也会递增。利用它我们可以写一个随机数。准备这里需要用到两个函数srand() 和 rand()我们可以上MSDN去查看用法它需要两个头文件<time.h> 和 <stdlib.h>开始写引好头文件,先写这么一句srand((unsigned int...原创 2021-07-29 00:27:09 · 1638 阅读 · 0 评论 -
C语言实现扫雷游戏(超详细)
本篇将带来C语言实现扫雷游戏的功能,希望给大家有所帮助。目录一、提前准备二、main函数game()函数三、初始化(InitBoard()函数)的实现四、展示雷区(Display()函数)的实现五、埋雷(SetMine()函数)的实现六、开始扫雷(FindMine()函数)的实现GetMineCount() 函数七、结尾一、提前准备为了方便,我们准备三个文件分别实现不同功能。test.c 文件用来测试游戏。game.c 文件用来对游戏函数的..原创 2021-07-29 00:05:01 · 1644 阅读 · 0 评论 -
初识C语言
@[TOC](文章目录)#1. 什么是C语言? 1972年C语言诞生于贝尔实验室,具有可移植性,功能强大。 C语言是一门高级程序设计语言,面向过程。#2.第一个C语言程序#include <stdio.h>int main(){ printf("hello world"); return 0;}#include <stdio.h> 指的是调用的头文件stdio 即standard input out...原创 2021-07-19 14:44:51 · 852 阅读 · 0 评论