![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 68
呼的一声飞的好远好远
这个作者很懒,什么都没留下…
展开
-
模拟实现str类函数和几个内存操作函数
模拟实现strcpy函数:将一个字符串拷贝到另一个字符串里#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>char *my_strcpy(char *dest,const char *str){ char *ret = dest; while (*dest++ = *str++) { ; }原创 2017-12-08 10:40:10 · 164 阅读 · 0 评论 -
递归和迭代
c通过运行时堆栈支持递归函数的实现递归函数就是直接或间接的调用自身的函数。 许多的书上在讲解递归的时候都会用阶乘和斐波那契数列来举例子但是非常不幸的是这两个栗子中,第一个栗子中递归并没有提供任何优越之处,而第二个栗子它的效率之低是肥肠恐怖的!!我们在之前会学到函数在调用的时候会压栈,调用一次压一次,所以使用递归函数的时候函调用很多很多次堆栈!!这个耗费是肥肠肥肠大的!!那效率是真的很低!!!我们可原创 2017-12-19 10:55:26 · 175 阅读 · 0 评论 -
笔试必考:关于数组的一些计算
#include<stdio.h>#include<unistd.h>#include<string.h>int main(){ //一维数组 //本系统为64位 //int a[] = {1,2,3,4}; //printf("16::%ld\n",sizeof(a)); //printf("8::%ld\n",sizeof(a...原创 2018-07-27 15:08:13 · 136 阅读 · 0 评论 -
关于指针的一些计算
int main(){ //int a[5] = { 1, 2, 3, 4, 5 }; //int *ptr = (int *)(&a + 1); //printf("%d,%d", *(a + 1), *(ptr - 1));//2 5 /*int a[4] = { 1, 2, 3, 4 }; int *ptr1 = (int *)(&a + 1); int ...原创 2018-07-31 15:55:38 · 147 阅读 · 0 评论 -
字符串函数的模拟实现
//strlen//1.size_t my_strlen(char *str){ if (*str == '\0') { return 0; } return 1 + my_strlen(str+1);}//2.//int my_strlen(char *str)//{// char *p = str;// while (*p != '\0');// {// ...原创 2018-07-31 17:25:17 · 130 阅读 · 0 评论 -
排序算法的比较
1.冒泡排序(时间复杂度O(n^2),空间复杂度O(1),不稳定排序) 首先定义一个变量size_t bount=0 [0,bound)的区间已经排好序的区间,[bound,size)待排序的区间 从第二个数字开始,每一个数字都会和前一个数字进行比较,如符合则交换void BubbleSort(int array[],size_t size){ if (size == ...原创 2018-08-16 16:19:44 · 190 阅读 · 0 评论 -
智能指针——auto_ptr
智能指针:自动的管理指针所指向动态资源的释放 首先我们先来看一下这个最古老的智能指针auto_ptr 但是他存在管理权转移的问题 这是一个最基本的auto_ptrtemplate <class T>class Autu_ptr{public: Autu_ptr(T *ptr) :_ptr(ptr) {} //拷贝构造 //管理权...原创 2018-08-20 17:46:03 · 176 阅读 · 0 评论 -
C语言大纲
C语言大纲原创 2018-08-21 11:04:43 · 326 阅读 · 0 评论 -
自定义类型—结构体,位段,联合
结构体结构的声明:必须列出它包含的所有元素(包括类型和名字) 例:struct SIMLIE{//SIMPLE为这个结构的名字或者标签int a;int b;int c;};我们可以看到这个结构没有定义变量,在后续的程序中如果想要定义结构的变量,我们可以直接使用这个结构的名字来直接定义结构变量struct SIMPLE simple;其实啊,在C语言总还有一种定义结构体类型的方法,那就是用原创 2017-12-08 16:30:37 · 261 阅读 · 0 评论 -
结构体的内存对齐问题
首先结构体的内存对齐问题是一个肥肠肥肠重要的问题!! 它最主要的体现就是结构体的内存占用字节大小,占用字节打下又和对齐数有着密切的关系,下来我们就来说一下结构体内存对齐的四大原则!!和我们这个对齐数到底这么一回事!!四大原则:结构体的内存对齐问题 1.第一个成员在与结构体变量偏移量为0的地址处。 2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 //对齐数 = 编译器默认的一原创 2017-12-10 21:07:36 · 380 阅读 · 0 评论 -
可变参数列表解析
可变参数:即可以改变参数列表可以使函数接受一个以上的任意多的参数 一般来说我们在定义并使用一个函数的时候,它的参数的个数是确定好的,而可变参数呢就是针对于一些参数数量改变的函数,例如我们呢在计算一堆数据的平均值的时候我们可以就算出这些参数的总体数量之后就可以使用可变参数来实现~ 首先我们要知道可变参数的定义方法或者说是格式int Add(int n,...)//n代表可变参数部分的个数,...代原创 2017-12-09 23:40:05 · 114 阅读 · 0 评论 -
C语言的操作符
sizeof关键字原创 2017-10-19 18:34:27 · 147 阅读 · 0 评论 -
三子棋C语言实现
要写这个三子棋的程序我们分为三个部分首先是声明函数的头文件,我们分别声明了五个函数,初始化棋盘,打印棋盘,玩家走,电脑走,检查是否赢了。之后我们写测试代码然后分别来实现这五个函数#define _CRT_SECURE_NO_WARNINGS 1#ifndef __game_h__#define __game_h__#include<stdio.h>#define ROW 3#define原创 2017-10-28 18:30:05 · 261 阅读 · 0 评论 -
C语言求一元二次函数的根
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<math.h>int main(){ float a, b, c, disc, x1, x2; do{ scanf("%f%f%f", &a, &b, &c); disc = b*b - 4 * a*c; if原创 2017-10-29 15:20:04 · 4172 阅读 · 0 评论 -
c语言的三种数字排序方法
选择排序 冒泡排序 比较原创 2017-10-04 16:19:47 · 26533 阅读 · 0 评论 -
关于sizeof和strlen在一维数组的一些运算
sizeof:是一个判断表达式长度的关键字(重点是关键字不是函数)单位是字节。 strlen:是一个计算给定字符串长度的函数,直到碰到第一个字符串结束符’\0’为止,但返回值不包括‘\0’。接下来我们看一下这两个关于数组的一些比较容易让人混乱的一些运算1.一维数组int a[]={1,2,3,4};printf("%d\n", sizeof(a));//16为整个数组的长度,4个整原创 2017-11-03 15:24:04 · 339 阅读 · 0 评论 -
浅析无符号整型和有符号整型
整型包括长整型(long),短整形(short),整型(int),字符型(char)。众所周知,char是字符类型。但其实char也是一个比较古怪的整型,长度为1字节 (默认是无符号类型)。然后我们来解释一下有符号数和无符号数,首先我们要明白有符号和无符号都是针对二进制数来讲的,并且他们都是以补码的方式在计算机中存储的。 有符号数:用最高位最符号位,‘0’代表正数,‘1’代表负数,其余位用作原创 2017-11-04 17:20:00 · 17564 阅读 · 2 评论 -
深度剖析函数的调用过程
我们先从一个简单的小程序看起#define _CRT_SECURE_NO_WARNINGS 1#includeint Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret = Add(a, b);原创 2017-11-05 21:53:57 · 278 阅读 · 0 评论 -
函数指针与函数指针数组
1.函数指针:顾名思义,指向函数的指针 举个例子:void *fun(int x);我们一般在定义普通指针的时候是这样定义的 void* fun,此时我们便定义了一个普通指针,对比一下,我们可以发现其实普通指针与函数指针也不过是多了一对括号与括号里的参数。不过少了参数的函数也便不再是函数。在数组里我们可以知道数组明单独出现时代表的是数组的地址,其实在函数里函数名代表的也是函数的原创 2017-11-29 14:08:06 · 187 阅读 · 0 评论 -
注释转换项目
一个小的注释转换项目 我们要将c语言的注释(/**/)全部转换成c++(//)样子的!! 画张图我们就了解了整个流程#define _CRT_SECURE_NO_WARNINGS 1#include"convert.h"#define INPUT "input.c"#define OUPUT "output.c"static int status = NULSTAT;/*只要读到的字符不确原创 2017-12-08 11:05:44 · 162 阅读 · 0 评论