c语言
Billy12138
i am billy
展开
-
<随笔>-C++保留字段
保留字段指的不是网上好多博客写的关键字,保留字之类的东西,其作用是提高程序的兼容性,使用场景是相互之间使用结构体传递数据,但是该结构体随着软件的发展会增加某些字段,这时候如果直接改结构体就会造成一些不必要的麻烦,假如两个人是使用网络通信去传递结构体,新增了字段之后接收方还是按照旧的大小去读取就会出问题.举个例子:某结构体:typedef struct { int a; int b;}stNode;两者之间都是按照二进制传递解析的,发送端不断发送该结构体给接收端,接受端按照s原创 2020-11-06 15:03:28 · 805 阅读 · 1 评论 -
【数据结构】链表常见面试题集锦
比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? (1)空间上的比较, 顺序表是一段连续空间,然后实现数据的增删,顺序表一般是固定大小的,链表是每次之开辟一个节点的大小用多少给多少。 (2)空间的使用 顺序表是直接开辟一段空间,如果数据过少的话就会造成空间的浪费,而链表是需要存储一个数据才开辟一个节点的空间,来保存数据,虽然有一个非数据项的指针域占用空间,可是相比顺序表要好很多,...原创 2018-08-02 09:41:20 · 402 阅读 · 2 评论 -
【c++】const关键字解析
首先我们来看一下为什么要使用const呢?因为采用符号常量写出的代码更容易维护;指针常常是边读边移动,许多函数参数都是只读不谢的,const最常见的用法就是作为数组的界和switch分情况标记(也可以用枚举符代替)。 分类: 常变量:const 类型说明符 变量名 常引用: const 类型说明符 & 引用名 常对象:类名::fun(形参) const 常数组:类型说明符 ...原创 2018-07-26 13:41:49 · 8859 阅读 · 2 评论 -
【c语言】malloc函数详解
谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道。 关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果: 也可以这样认为(window下)原型:extern void *malloc(unsigned int num_bytes);头文件:#include<malloc.h...原创 2018-07-29 11:35:53 · 314026 阅读 · 51 评论 -
【c语言】模拟实现strlen、strcpy、strcat、strstr、strcmp、memcpy、memmove
模拟实现strlen#include<stdio.h>#include<string.h> int my_strlen(char *arr) { int count = 0; char* pcur = arr; if (pcur) { while (*pcur+...原创 2018-07-25 18:19:02 · 206 阅读 · 0 评论 -
【c语言】递归和非递归的相互转换
前面已经介绍过递归的相关概念这里不多介绍,直接介绍转换方法: 一、递归转非递归的两种方法 1、一般根据是否需要回溯可以把递归分为简单递归和复杂递归,简单递归就是根据递归式来找出递推公式(这也就引申出分治思想和动态规划) 2、复杂递归一般就是模拟系统处理递归的机制,使用栈或队列等数据结构保存回溯点来求解 二、如何用栈实现递归与非递归之间的转换 1、递归于非递归的原理 递归与非递归的转换基...原创 2018-07-25 15:17:18 · 4214 阅读 · 0 评论 -
【c语言】递归算法解析
一、基本概念: c语言通过运行时堆栈来支持递归的实现的。递归函数就是直接或者间接调用自身的函数。 这里有一个简单的程序,可用来说明递归。程序的目的是将一个整数从二进制形式转化为可打印的字符形式,例如给出一个值4267,我们需要一次产生‘4’,‘2’,‘6和‘7’。如果在printf函数中使用了%d格式码,它就会执行这类处理。 这里的算法思路是,把这个值反复除以10,并打印各个...原创 2018-07-25 10:54:56 · 29541 阅读 · 4 评论 -
【c语言】c语言知识框架思维导图
经过几天的总结终于完成了这一张c语言部分思维导图:原创 2018-07-24 18:10:39 · 3384 阅读 · 6 评论 -
【c语言】数组计算问题--数组的大小是多少
解释说明:每一条语句后面的就是测出来的运行结果,下面是原因解释:#include <stdio.h> int main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//16 //数组名放在sizeof里表示整个数组 printf("%d\n", sizeof(a + 0));//4...原创 2018-07-24 12:03:47 · 3442 阅读 · 0 评论 -
【c语言】C语言精华部分
经过一段时间的学习,我们的c语言学习已经告一段落,今日特做以总结。一、关于c语言的一些基础概念和大多数程序员一样,我们所学的第一个程序就是,在屏幕上输出一句话"hello world",不过我们的是"hello bit".再然后我们学习了c语言的一些基础知识。 注释:c语言注释/**/c++//转义字符:三字母词:首先是关键字:在c99标准中,...原创 2017-11-04 19:24:48 · 1833 阅读 · 0 评论 -
【c语言】c语言实现顺序表(静态)
//头文件//seqlist.h#ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include #include #include #include #define MAX 10 typedef int DataType; typedef struct SeqList { DataType data[MAX]; int sz;原创 2017-11-06 22:09:17 · 322 阅读 · 0 评论 -
c语言中部分限制字符函数的实现strncmp,strncat,strncpy,strstr,strrstr
1、带限制的字符串比较函数的实现#include int my_strncmp(char *p, char *q, int n) { int count = 0; while ((*p == *q)&&(count < n)) { *p++; *q++; count++; } if (*p == *q) { return 0; } e原创 2017-07-29 00:56:46 · 445 阅读 · 0 评论 -
简单静态通讯录的实现
头文件部分:Contact.h#define _CRT_SECURE_NO_WARNINGS#ifndef __CONTACT_H__ #define __CONTACT_H__ #include #include #include #define MAX 1000 //通讯录最大存储量#define NAME_MAX 20//名字最大长度 #define SEX_MA原创 2017-07-17 23:45:54 · 393 阅读 · 0 评论 -
通讯录第三阶--文件版通讯录
前两次分别实现了静态和动态通讯录,可是当程序运行完之后所储存的信息就会消失,不能称为一个真正达到目的的通讯录,学习了文件操作章节之后,特将通讯录写成文件版,直接将数据保存到文件中,以后要用就可以直接使用,不用重复书写了。代码如下:Contact.h#define _CRT_SECURE_NO_WARNINGS #ifndef __CONTACT_H__ #define __CO原创 2017-07-23 19:08:04 · 924 阅读 · 0 评论 -
利用回调函数实现通用冒泡排序
#include #include int cmp_int(const void *e1, const void *e2)//整形数组元素比较e1>e2返回值大于0,e1<e2返回值小于0{ return (*(int *)e1) - (*(int *)e2); }int cmp_str(const void* e1, const void *e2)//字符串比较不能直接加减要用字原创 2017-07-09 16:23:41 · 337 阅读 · 0 评论 -
解析c语言结构体和位段
1.结构的定义 结构类型定义的一般形式为:struct 结构名{ 类型名 结构成员名1; 类型名 结构成员名2; ... 类型名 结构成员名n;};struct是定义结构类型的关键字,在struct之后,自行命名一个结构名,它必须是一个合法C标识符,struct与结构名两者合起来共同构成结构类型名,如struct student,大括号里面的内容是结构所包括的结构成员原创 2017-07-16 12:09:38 · 474 阅读 · 0 评论 -
函数的执行过程-栈帧的创建与销毁
众所周知变,在我们编写代码时函数的一些优点使我们会频繁的使用函数,那么函数执行的过程到底是怎样实现的呢?我们以一个简单的函数加法函数为例:代码如下:#define _CRT_SECURE_NO_WARNINGS#include int add(int x, int y){ int z = 0; z = x+y; return z;}int main(){ int a原创 2017-05-28 21:20:13 · 664 阅读 · 0 评论 -
三子棋小游戏(新手必看)
头文件game.h#ifndef __GAME_H__#define __GAME_H__#include #include#include #include #define ROWS 3#define COLS 3void init_board(char board[ROWS][COLS], int row, int col);void display_board(ch原创 2017-04-23 14:00:32 · 444 阅读 · 0 评论