![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
Mikoto_10032
这个作者很懒,什么都没留下…
展开
-
堆内存
什么是堆内存: 是进程的一个内存段(text\data\bss\heap\stack),由程序员手动管理 特点:足够大,缺点:使用麻烦为什么使用堆内存 1、随着程序的复杂,数据量变多 2、其他内存段的申请、释放不受控制,堆内存的申请和释放受控制如何使用堆内存 注意:C语言中没有控制堆内存的语句,只能使用C语言标准库中提供的函数#include<stdlib.h>void *malloc(size_t size);//功能:从堆内存中申请size个字节原创 2020-10-30 15:09:43 · 128 阅读 · 0 评论 -
字符串和输入输出缓冲区
字符串 字符:在计算机中字符是以整数形式存在的,当需要使用时会根据ASCLL码表中的对应关系来显示相应的符号或图案 0 ‘\0’ 48 ‘0’ 65 ‘A’ 97 ‘a’ 串: 一种数据结构,由一组连续的若干个相同类型的数据组成。 末尾有一个结束标志。 对于串行结构的处理都是批量性的,从开头位置直到遇到了结束标志停止。 字符串:由字符组成的串型结构,由’\0’结尾字符串的输入 scanf %s 地址 缺点:不接收空格原创 2020-10-30 15:16:58 · 560 阅读 · 0 评论 -
C语言实现字符串常用函数strlen、strcpy、strcmp、strcat
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stddef.h>size_t t_strlen(const char *s){ int len = 0; while(s[len]) len++; return len;}char* t_strcpy(char* dest,const char* str){ for(int i原创 2020-11-01 11:26:36 · 310 阅读 · 0 评论 -
复合结构类型(结构体、Union)
复合结构类型结构体: 结构是由程序员自己设计的一种数据类型,用于描述一个事物的各项数据,由若干个不同的基础类型组成。设计:struct 结构体名{ 类型1 成员名1; 类型2 成员名2; ...};定义结构变量: struct 结构体名 结构变量名; 注意:定义结构体变量时,struct不能省略定义结构变量初始化: struct 结构名 结构变量名 = {v1,v2,v3}; 注意:要根据结构体设计的顺序初始化 struct 结构名 结构原创 2020-11-06 20:32:40 · 818 阅读 · 0 评论 -
指针的使用(指针数组、数组指针的定义、如何避免野指针)
什么是指针 是一种特殊的数据类型,使用它可以定义指针变量,指针变量储存的是整型数据,代表了内存的编号,通过这个标号可以访问对应的内存。为什么要使用指针 1、函数之间相互独立,但有时候需要共享变量 函数传参是值传递 全局变量容易命名冲突 使用数组会丢失长度,需要另外传递长度 命名空间是相互独立的,但是地址空间是同一个,所以指针可以解决这个问题 2、由于函数与函数之间是值传递(拷贝),对于字节数多的变量,值传递的效率较低,如果传递的是变量的地址,只需要原创 2020-10-27 19:03:38 · 371 阅读 · 0 评论 -
C语言宏定义详解
宏#define 定义宏 宏常量:#define MAX 100 优点:提高代码扩展性、提高可读性、提高安全性、可以用在case后面。 注意:末尾不要加分号,一般宏名全部大写 【全局变量:首字母大写 局部变量:全部小写】 【函数名:小写加下划线 指针:p 数组:arr 字符串:str】 预定好的宏: _func_ 获取当前函数名 _FILE_ 获取当前文件名 _LINE_ 获取行号 _DATE_ 获取当原创 2020-10-27 19:01:41 · 1419 阅读 · 0 评论 -
进程映像和类型限定符
进程映像: 程序:储存在磁盘上的可执行文件(二进制文件,脚本文件) 进程:正在系统中运行的程序 进程映像:指的是进程内存的分布情况 text 代码段 储存的是二进制指令、常量,权限只读,强行修改会产生段错误 data 数据段 储存的是初始化后的全局变量、初始化后被static修饰的局部变量 bss 静态数据段 储存的是未初始化的全局变量,未被初始化后被static修饰的局部变量,程序运行时会被清理为0 stack 栈 储存局部变量原创 2020-10-22 19:24:02 · 102 阅读 · 0 评论 -
进制转换和函数的定义
进制转换: 为什么使用二进制、八进制、十六进制 因为现在的CPU只能识别高低两种电流,只能对二进制数据进行计算。 二进制数据虽然可以直接被CPU计算识别,但是不方便书写、记录,把二进制数据转换为八进制是为了方便记录在文档中。 随着CPU位数不断地增加,由早期的8位逐渐发展成了现在的64位,因此八进制就不满足需求,所以发展出了十六进制。 由于历史原因八进制还不能退出历史舞台(文件权限rwx = 4+2+1) 十进制转二进制: 求余法:用2对数据进行求原创 2020-10-18 09:12:16 · 252 阅读 · 0 评论 -
C语言简单编写走迷宫和推箱子游戏
走迷宫 1、定义一个二维数组作为迷宫 2、定义老鼠的坐标 3、获取游戏开始时的时间 4、进入循环 1)system(“clear”);//清理屏幕 2)显示迷宫 3)检查是否走出迷宫 是:结束迷宫 4)移动角色一次,获取方向键并处理 判断揭下来要走的位置是否有路 1、把新位置赋值给老鼠"@" 2、把旧位置赋值为" " 3、把记录老鼠的坐标跟新#include&原创 2020-10-18 09:08:14 · 410 阅读 · 0 评论 -
C语言编写走迷宫小游戏
走迷宫 1、定义一个二维数组作为迷宫 2、定义老鼠的坐标 3、获取游戏开始时的时间 4、进入循环 1)system(“clear”);//清理屏幕 2)显示迷宫 3)检查是否走出迷宫 是:结束迷宫 4)移动角色一次,获取方向键并处理 判断揭下来要走的位置是否有路 1、把新位置赋值给老鼠"@" 2、把旧位置赋值为" " 3、把记录老鼠的坐标跟新推箱子1、定原创 2020-10-22 19:21:57 · 944 阅读 · 0 评论 -
一维数组和二维数组的定义和使用
数组什么是数组:变量的组合,是一种批量定义变量的方式定义:类型 数组名[数量] int arr[5]; == int num1,num2,num3,num4,num5;使用:数组名[下标] 下标:从0开始,范围:0~数量-1遍历:与for循环配合使用for(int i = 0; i< 5; i++) { printf("%d ",arr[i]); }初始化:类型 数组名[数量] = {1,2,3,4,5}; 1、数组与普通变量是一样默认值是的随机,为原创 2020-10-14 19:51:20 · 1288 阅读 · 0 评论 -
C语言入门基础
C语言简介 BCPL->newB->C->UNIX->Minix->Linux->gcc C语言诞生于1971~1973年,在肯.汤普逊和丹尼斯.里奇领导下编写完成 归属于美国的贝尔实验室。 C语言为了专门编写操作系统而诞生的语言,所以天生适合对硬件编程,也因为速度快而著称,也非常适合实现数据结构和算法。 由于出现时间早,有很多缺陷,也没想过普通人能使用C语言编程,因此存在着缺陷,但是前辈总结了一些可以避免的经验《C语言陷阱和缺陷》《C程序设计语言》原创 2020-10-12 19:31:20 · 350 阅读 · 0 评论 -
vim的基本命令总结
重定向、管道和通配符 重定向:把命令的执行结果写过到文件中 cmd>fliename 如果文件存在则清空后写过,如果文件不存在,则创建后写入 cmd>>fliename 如果文件存在,则追加写入,文件不存在,则创建后追加写入 例:ls > test.txt 会把当前目录下的文件信息直接写入test/txt文件中 管道:相当于一根管子连通两个命令,一个命令的执行结果当做另一个命令的数据源 find / | grep “key” 查询所有文件名中含有原创 2020-10-10 18:41:28 · 98 阅读 · 0 评论 -
Linux系统命令行
开发环境: VirtualBox 虚拟机工具 开源免费 Ubuntu 12.04 LTS 长期支持版本 稳定 vim 代码编辑器 gcc 编译器Linux系统简介: BCPL->newB->C->Unix->Minix->Linux GNU Linux Linux管理硬盘的能力非常强,所以我们看到的只有一个分区, /根目录,所有的文件都储存在它下面 /bin 储存系统命令 /原创 2020-10-09 19:49:08 · 111 阅读 · 0 评论 -
按分号读取字符串,strncpy读取乱码
从str字符串中按分号读取到book结构体中。str = “C++_入门;SD-TP-1002;BC;40;”遇到的问题:strncpy读取乱码;因为strncpy是不会在复制完后自动给字符串添加\0结束符的。所以book->name = malloc(end-str+1);加一是为了给\0预留一个位置,但预留一个位置,还要将\0赋值给最后一位,这样在后面运用这些字符串就不会出现乱码了例如:strncpy在进行自我拷贝时会出现重叠区域总结:strncpy(dest,src,end-str原创 2020-11-30 13:03:52 · 913 阅读 · 0 评论