细说C语言【内存存储】
**本文章分为:内存结构、大小端存储、不同数据类型的存储方式** 内存结构 C语言中,对内存进行了划分。总共分为:栈区、堆区、代码区、常量区、全局数据区。 其中全局数据又可细分为:初始化静态数据区和未初始化静态数据区 栈区 - **存放函数执行时的局部变量、函数参数和函数返回值** - 栈区的**大小由操作系统决定** - 函数之间的调用是通过栈实现的,**调用函数就入栈,函...
**本文章分为:内存结构、大小端存储、不同数据类型的存储方式** 内存结构 C语言中,对内存进行了划分。总共分为:栈区、堆区、代码区、常量区、全局数据区。 其中全局数据又可细分为:初始化静态数据区和未初始化静态数据区 栈区 - **存放函数执行时的局部变量、函数参数和函数返回值** - 栈区的**大小由操作系统决定** - 函数之间的调用是通过栈实现的,**调用函数就入栈,函...
速通回忆 **如果你之前学过链表**,可以直接看我下面的这个项目,实现了下面专题中所有内容; **如果你是个新手**,**_建议先不要看下面这个项目_**,先好好看一下下面每一个部分的代码思路,并尝试自己去写一下 ``` /* * 功能:单链表操作 * 作者:此乃刘同学(www.liustu.com.cn) */ #include "stdio.h" #include "stdl...
速通回忆 **如果你之前学过链表**,可以直接看我下面的这个项目,实现了下面专题中所有内容; **如果你是个新手**,**_建议先不要看下面这个项目_**,先好好看一下下面每一个部分的代码思路,并尝试自己去写一下 ``` #include "stdio.h" #include "stdlib.h" #include "string.h" /* 学生数据结构体 */ typedef str...
算法基础 算法的特性: - **输入输出**:**_算法具有零个或者多个输入,同时,算法具有至少一个的输出。_** - **确定性**:**_算法的每一步都具有确定的含义,无二义性_** - **有穷性**:**_每个算法需要在有穷的时间内完成_** - **可行性**:**_一个算法是可以被执行的_** 算法设计要求 - **正确性**:**_能够满足预先指定的功能与性能的需求_...
const与static都是C语言中的关键字,这两个关键字是比较难以彻底理解的,所以写一篇文章专门介绍这两个关键字! const理论 如果一个变量被const修饰,那么它的值就不能再被改变;这个功能有点像宏定义的#define,但是它存在肯定有它存在的道理,相比预处理,const有以下有点: - 预编译指令只是对值进行简单的替换,不能进行**类型检查** - 可以保护被修饰的东西,防止意...
函数概述 **函数是C源程序的基本模块**,通过对**函数模块的调用**实现特定的功能。C语言不仅提供了极为丰富的库函数(如Turbo C,MS C都提供了三百多个库函数),还允许用户建立自己定义的函数 C语言中从不同角度对函数进行分类: - 从函数定义的角度看 - 库函数 - 用户定义函数 - 函数中有函数和过程两种功能 - 有返回值函数...
预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作 预处理是C语言的一个重要功能,它由预处理程序负责完成;当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译 C语言提供了多种预处理功能,如**宏定义、文件包含、条件编译**等 宏定义 无参宏定义 其定义的一般形式为: #define 标识符 字符...
地址指针的基本概念 为了正确地访问这些内存单元,必须为每个内存单元编上号。根据**一个内存单元的编号(地址)**即可准确地找到该内存单元;所以通常也把**内存单元的编号(地址)称为指针** 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针 变量的指针和指向变量的指针变量 变量的**指针**就是变量的**地址**...
对于整数来说,要判断其是否等于0,只需写if(a==0)即可,但是浮点数该如何比较呢? 当我们给浮点数赋值123时,输出结果为123.000000 ``` #include "stdio.h" int main(){ float a = 123; printf("%f\n",a); return 0; } ``` 当我们使用%.50f标识double类型时就...
****C语言中一共32个关键字,看这一篇就够了!!!**** 数据类型关键字 - unsigned/signed: 用于修饰整数类型; 另外char共有3种不同的类型:char、unsigned char、signed char;其中**char才是真正的字符型**,unsigned和signed是用来声明数值的 - struct: struct关...
关系运算符和表达式 比较两个量的运算符称为关系运算符 关系运算符及其优先级 C语言包括“<”、“>”、“>=”、"<="、"!="、"==" 关系运算符均为双目运算符,其结合性为左结合。**关系运算符的优先级低于算数运算符**,**高于赋值运算符** 其中<、<=、>、>=的优先级相同,!=、==的优先级相同 关系表达式 一般形式为:**表达式 关系运算符 表达式**;关系表达式允...
C语言提供了多种循环语句,可以组成各种不同形式的循环结构: - 使用goto语句和if语句构成循环 - while语句 - do-while语句 - for语句 goto语句以及goto语句构成循环 goto语句是一种无条件转移语句。 使用格式为:goto 语句标号; 其中语句标号是一个有效的标识符,在要跳转到位置前加上“语句标号:”,执行goto语句后,程序会跳转到该标号处并执...
**按顺序排序的同类数据元素的集合称为数组**;在C语言中,数组属于构造数据类型,这些数据元素可以是基本数据也可以是构造类型,可以根据数组元素的类型不同分为数值数组、字符数组、指针数组、结构体数组等。 一维数组的定义和引用 一维数组的定义 在C语言中使用数组必须先进行定义,一维数组的定义格式为:类型说明符 数组名\[常量表达式\] - 类型说明符是任一种基本数据类型的构造数据类型 -...
数据类型 在程序中所有变量都需要先定义后使用。对变量的定义包括:**数据类型,存储类型,作用域** 数据类型分为:**基本类型、构造类型、指针类型、空类型**。 基本类型 基本类型的最主要特点是,**其值不可以在分解成其他类型。** 构造类型 构造类型的**值可以进行分解**,分解成一个或多个基本类型或构造类型。 C语言中常见的构造类型有:**结构体、共用(联合)体、数组**...
C语言中程序可以分为三种基本结构:顺序结构、分支结构、循环结构。 C语句概述 C语言的执行部分是由语句组成的,C语句可以分为 - 表达式语句:计算表达式中的值 - 函数调用语句:调用函数 - 控制语句:控制程序的流程 - 条件判断语句:if-else语句 switch语句 - 循环执行语句:for、while、do-while - 转向语...
题目来源: 问题 给你一个数组 `nums` 和一个值 `val`,你需要 **** 移除所有数值等于 `val` 的元素。元素的顺序可能发生改变。然后返回 `nums` 中与 `val` 不同的元素的数量。 假设 `nums` 中不等于 `val` 的元素数量为 `k`,要通过此题,您需要执行以下操作: - 更改 `nums` 数组,使 `nums` 的前 `k` 个元素包含不等于 `...
题目来源: 问题 给你一个数组 `nums` 和一个值 `val`,你需要 **** 移除所有数值等于 `val` 的元素。元素的顺序可能发生改变。然后返回 `nums` 中与 `val` 不同的元素的数量。 假设 `nums` 中不等于 `val` 的元素数量为 `k`,要通过此题,您需要执行以下操作: - 更改 `nums` 数组,使 `nums` 的前 `k` 个元素包含不等于 `...
题目来源: 问题 给你两个按 **非递减顺序** 排列的整数数组 `nums1` 和 `nums2`,另有两个整数 `m` 和 `n` ,分别表示 `nums1` 和 `nums2` 中的元素数目。 请你 **合并** `nums2` 到 `nums1` 中,使合并后的数组同样按 **非递减顺序** 排列。 **注意:**最终,合并后数组不应由函数返回,而是存储在数组 `nums1` 中...
在Linux中cal命令显示系统月历与日历。 使用C语言复复刻“cal”命令的显示。 main.c ``` #include <stdio.h> #include <stdlib.h> #include <time.h> // 获取指定日期是星期几 int getWeekday(int year, int month, int day) { if (month < 3) {...
协议 互联网中常用的协议有HTTP、TCP、IP等。 协议的必要性 简单的说,协议就是计算机与计算机之间通过网络信息时,实现达成的一种“约定”。好比一个中国人说汉语一个外国人说英语,使用不同的国家语言进行沟通,那么肯定无法交流;但是如果两个人约定好都说同一个语言,那么就可以互相沟通通信。 协议分为很多种,每一种协议都明确界定了他们的行为规范。 协议分层 TCP/IP协议 TCP/I...