![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 72
起个名字好难丫
brick by brick
展开
-
栈、堆、全局区/静态存储区、常量区、代码段、到底是什么?
本篇博客主要介绍一个程序在运行时我们代码中的各个变量、常量、数据如何存放、程序如何逐步运行,详细介绍:栈、堆、全局区/静态存储区、常量区、代码段。原创 2023-02-03 22:43:33 · 1594 阅读 · 3 评论 -
编译链接过程详解
本篇博客主要详细介绍编译链接过程中的每个阶段每个步骤的详细过程包括:预编译(处理伪指令、特殊符号)、编译(词法、语法分析、生成汇编代码)、汇编(生成二进制文件)、链接(链接程序相关文件并生成可执行文件、动态链接、静态链接等)原创 2023-02-02 23:17:27 · 2349 阅读 · 0 评论 -
malloc realloc calloc 详解
本篇博客主要详细解释了 malloc calloc realloc三种内存申请函数的用法,以及三种函数的特点,三个函数之间的差异,和一些特殊条件下的情况。原创 2020-01-16 15:57:20 · 254 阅读 · 0 评论 -
C语言中的结构体与" . " 和 "- >"详解
结构体我们知道c语言中有多种数据类型比如 int char float 等数据类型,我们可以给一个变量或者数组给定同一类型的数据。而在结构体中允许用户自定义一个可以存放多种数据类型的成员变量,这就是一种自定义的数据类型–结构体。具体来看一下结构体声明结构体struct tag //结构体名称{ member-list; //成员变量}variable-list;//...原创 2019-07-27 17:23:34 · 3295 阅读 · 0 评论 -
带头双向循环链表的实现
双向链表我们在学习了单链表和双链表之后,可以很明显的感受到,单链表因为只能单一的指向后继结点,想要找到前驱就不容易,因此,引入双向链表,当用单链表来进行插入删除时,显得比较麻烦,而带头双向循环链表就可以很好的解决这个问题,首先来看一下双向链表的结构:首先定义了一个头结点,当只有一个头结点时,这里注意的是,头结点的next 和prev不再指向NULL 而是指向自己,这样就构成了一个双向循环带头...原创 2019-07-31 17:00:04 · 258 阅读 · 4 评论 -
C语言实现单链表--详解
单链表本篇博客主要整理了带头指针的单链表的,初始化,头插,尾插,头删,尾删,在指定位置之插入,查找数据位置,删除指定位置之后的结点,删除指定位置之后的所有结点等功能,并在代码的注释附上了详细的解释,希望可以对读者有所帮助。链表概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的实际中链表的结构非常多样,以下情况组合起来就有8种链表结构...原创 2019-07-29 18:19:42 · 277 阅读 · 0 评论 -
从时间复杂度和空间复杂度来看斐波那契数列
首先我们来看一下什么叫斐波那契数列:斐波那契数列是指这样一个数列:1 1 2 3 5 8 13 21 34 55 ~ ~ ~等这样的一组数列。接下来看两个计算第n个斐波那契数的代码:非递归:...原创 2019-06-04 18:30:04 · 845 阅读 · 1 评论 -
用C语言实现三子棋,电脑优化算法;
话不多说上代码:这个三子棋就是对二维数组的一个应用项目,通过电脑生成随机数来控制电脑的下棋,但这样电脑比较笨,通过对电脑算法的优化让电脑更聪明;更多的是平局,也有可能电脑赢哟。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define ROW...原创 2019-05-29 10:51:48 · 737 阅读 · 1 评论 -
C语言中的string系列函数的模拟实现
字符串函数主要有这些这些都是库里的函数可以直接使用,这里主要讲以下它的用法和模拟实现另外在这里介绍一个学习网页http://www.cplusplus.com,可以在上面搜索相关的函数等strlen 求字符串长度函数strcpy 字符串拷贝函数strcat 字符串追加函数strcmp 字符串比较函数strlen: 计算字符串长的函数这是一...原创 2019-05-30 21:29:42 · 316 阅读 · 0 评论 -
C语言中的数组
今天来梳理一下数组的相关知识数组:先来看一下数组的形式:int arr1[10];char arr2[10];double arr3[15];这些都是定义的一些数组,有存放整形的数组,存放字符的数组等;注意在创建数组的时候[ ] 中应为一个常量,不能使用变量。常见的给数组赋值如下:int arr1[10] = {1,2,3}; int arr3[5] = {1,2,3,...原创 2019-05-27 21:06:23 · 544 阅读 · 0 评论 -
C语言中的截断与整形提升
先看一段简单的代码#include<stdio.h>#include<stdlib.h>int main(){ char i=129; printf("%d\n",i); system("pause"); return 0;}大家看到肯定会有疑惑为什么输入的i时129,而以%d打印出来却是-127?这其中就涉及到截断和整形提升。首先我们都知道一个c...原创 2019-05-17 22:37:43 · 1043 阅读 · 1 评论 -
C语言中常见的操作符(下)
今天接着来整理一下C语言中简单常见的操作符1. = 赋值操作符复合赋值符+= -= *= /= %= >>= <<= &= |= ^=2.单目操作符:++ - - 加加 减减! 逻辑反操作 - 负值 + 正值& 取地...原创 2019-05-26 17:58:08 · 254 阅读 · 0 评论 -
C语言中常见的操作符(上)
今天主要来整理一些C语言中的操作符1.+ - * / % 加 减 乘 除 取模2.<< >> 左移 右移首先来讲一下 “+” 加法运算符。因为cpu只有加法器因而有了原反补的存在,这样就有了正负数减法 " - " 实际是加上一个负数。这就是计算机设计的巧妙之处,有了减法之后就有了 乘除运算。#include<stdio.h>#include<stdlib.h...原创 2019-05-25 22:18:33 · 500 阅读 · 0 评论