![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
昏昏的小猪仔
一个热爱生命,热爱生活的编程瓜娃子
展开
-
数据结构-01
什么是数据结构?数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的科学。程序设计 = 数据结构+算法数据结构就是关系,就是元素相互之间存在的一种或多种特定关系的集合。2.逻辑结构和物理结构逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的东西。物理机构: 是指数据的逻辑结构在计算机中的存储形式。四大逻辑结构:* 集合结构(当今的我是最优秀的)* 线性结构: 数据元素之间是一对一的关系* 树形结构:数据元素之间存.原创 2021-06-28 14:27:47 · 47 阅读 · 0 评论 -
动态内存分配
malloc函数向系统申请分配size个字节的内存空间,并返回一个指向这块空间的指针。申请这块空间并没被清理(初始化为0)。如果size的值为0,那么返回值会因标准库实现的不同而不同,可能是NULL,也可能返回一个指针值,稍后可以传给free函数。 #include <stdlib.h> ... void *malloc(size_t size);size是以字节为单位。...原创 2021-06-25 11:02:46 · 42 阅读 · 0 评论 -
生存期和存储类型
生存期C语言变量拥有两种生存期,分别是静态存储期(static storage duration)和自动存储期(automatic storage duration)。 具有文件作用域的变量具有静态存储期(比如全局变量),函数名也具有静态存储期。具有静态存储期的变量在程序执行期间将一直占据存储空间,直到程序关闭才释放;具有代码块作用域的变量一般情况下具有自动存储期(比如局部变量和形式参数),具有自动存储期的变量在代码块结束时将自动释放存储空间。存储类型前边我们分别介绍了C语言变量的作用域、..原创 2021-06-22 09:34:24 · 403 阅读 · 0 评论 -
局部变量和全局变量
局部变量不同函数之间的变量是不可以相互访问的。C语言允许在程序的任意位置声明变量。允许变量在需要时才声明是一件非常棒的事情。在函数里面定义的叫局部变量,在函数外面定义的叫外部变量,又叫全局变量。全局变量初始化,不对全局变量初始化,默认为0当局部变量和全局变量同名的时候,会屏蔽全局变量。如果一个全局变量在使用之后才被定义可以对该全局变量在访问之前,使用extern关键字对该变量进行修饰。这样可以告诉编译器在后面声明了。...原创 2021-06-18 16:24:27 · 125 阅读 · 0 评论 -
参数和指针
参数和返回值函数在定义的时候通过参数列表来指定参数的类型和数量,参数使得函数更灵活.传入不同的参数可以丰富函数的功能.如果你的函数不需要参数,请使用void来进行强调.函数的类型名实际上就是指定函数的返回值,如果函数没有返回值则使用void,表示不返回.形参和实参形参就是形式参数,函数定义的时候写的参数就叫形参,因为那个时候他只是一个占位符,而实参就是你真正掉用这个函数时,传进去的值.形参和实参的功能说白了就是数据传送,当发生函数调用时,实参的值会传送给形参,并且这种传输是具有单向性的,形..原创 2021-06-17 22:31:53 · 181 阅读 · 0 评论 -
函数---C语言
为什么要自己定义函数?* 随着程序的变大都避免不了下面的问题。* main函数变得相当冗杂,程序可读性差。* 程序的复杂性不断升高,编程就编程头脑风暴了。* 代码前后关联性高,修改代码往往牵一发而动全身* 为了在程序中多次使用某个功能,不得不重复多次写相同的代码。* 。。。。。。标准库函数C语言标准库中为我们提供了很多实现各种功能的函数,有处理字符串的,有数学计算的,有输入输出的,有进程管理的,有信号、接口处理的…有了这些函数,我们就不用去关注内部的实现细节,只要将注意力在实现的逻..原创 2021-06-17 16:23:21 · 54 阅读 · 0 评论 -
指向指针的指针
指向指针的指针 ```c#include <stdio.h> int main() { int num = 520; int *p = # int **pp = &p; …… return 0; } ``` 指向指针的指针就是指向地址的地址。就是指针变量的地址。指向指针的指针解引用是可以作为左值的。指针数组和指向指针的指针使用指向指针的指针来指向数..原创 2021-06-17 11:10:58 · 200 阅读 · 0 评论 -
void指针和NULL指针
void 类型:void即字面意思“无类型”。定义变量的时候我们通过类型来决定该变量所占的内存空间。无类型,不可以定义一个变量。void指针:void指针我们把它称之为通用指针,就是可以指向任意数据类型的指针,也就是说任意类型的指针都可以赋值给void类型指针。提示:不要直接对void类型的指针进行解引用,因为编译器不知道它所指向的数据类型。使用void指针一定要小心,由于void指针可以保罗万象的特性,间接使得不同类型的指针转换变成合法。void指针的步长和char指针的步长是一致.原创 2021-06-17 10:24:43 · 342 阅读 · 0 评论 -
指针和二维数组
C语言没有真正意义上的二维数组。在C语言中,二维数组的实现,只是简单的通过“线性扩展”的方式进行。如图所示,int b[4][5]; 就是定义 4 个元素,每个元素都是一个包含 5 个整型变量的一维数组。它在内存中依然是以线性的形式存储。弄清楚下边三个问题:假设我们定义了二维数组 int array[4][5] array表示的是什么?array表示的是一个数组指针,她的跨度是5个整型内存大小,一般是5*4*(array+1)表示的是什么?表示的是array[1][0]的地址(指针),.原创 2021-06-17 09:56:15 · 62 阅读 · 0 评论 -
C语言---指针数组和数组指针
指针和数组的区别指针式左值,左值就是识别或定位一个存储位置,是可改变的.数组名是一个地址常量不可改变,所以不是左值.指针数组指针数组是一个数组,每个元素存放一个指针.#include <stdio.h>int main(){ char *p1[5] = { "让编程改变世界 -- 鱼C工作室", "Just do it -- NIKE", "一切皆有可能 -- 李宁.原创 2021-06-14 17:03:33 · 91 阅读 · 0 评论 -
C语言 12----指针
1. 内存是如何存放变量的.通过变量名对变量进行访问和存储是为了方便程序员而设计的,其实内存中完全没有存取变量名的必要.因为编译器知道具体每一个变量名对应的存放地址,所以当你读取某一个变量名之后,编译器会找到变量名所在的地址,并根据变量的类型读取相应范围的数据.2. 指针和指针变量通常我们说指针就是地址的意思.C语言中有专门的指针变量存放指针,跟普通变量不同**,指针变量存放的是一个地址.**指针变量也有类型,它的类型就是存放的地址指向的数据类型在编译系统中,指针变量占四个字节的空间,也就是说一个原创 2021-06-13 14:56:31 · 98 阅读 · 0 评论 -
C语言左值和右值 ----10
左值: 识别和定位存储位置的标识符右值: 任何可读取的值。max= a>b?a:b; 取最大值。goto语句,尽量少用,但是如果有多个break可以用goto代替注释 // /* */原创 2021-06-10 16:24:06 · 58 阅读 · 0 评论 -
C语言09 -- 循环语句
循环结构要重复执行的结构称为循环结构。while语句(入口条件循环)while (表达式) 循环体表达式为真就不停的执行循环体。3. do…while语句(出口条件循环)do 循环体while (表达式);先执行循环体再进行判断。4. getchar从标准输入流中获取字符。重标准输入流(stdin)中获取下一个字符。返回值如果是 EOF,表示该函数调用失败:* 如果标准输入流位于处于结束的位置,该函数返回 EOF,并设置标准输入流的结束标志符。* 如果出现其.原创 2021-06-10 15:54:25 · 73 阅读 · 0 评论 -
C语言08 -- if语句和switch分支结构
分支结构的作用就是将C语言的代码引入歧途。处理多分支结构,可以考虑使用语法更加简洁的switch:…… // 其它语句switch (表达式){ case 常量表达式1: 语句或程序块 case 常量表达式2: 语句或程序块 …… case 常量表达式n:语句或程序块 default: 语句或程序块 }…… // 其它语句* 这里的每个常量匹配switch表达式得值* case后边必须跟一个常量而不是一个表达式。* 如果所有的case都没有匹配.原创 2021-06-09 16:25:22 · 189 阅读 · 0 评论 -
C语言07 -- 关系运算符合逻辑运算符
关系运算符在C语言中使用关系运算符来比较两个数的大小关系。关系运算符是双目运算符,它的结合性是从左到右。优先级 赋值运算符<关系运算符<算数运算符关系表达式用关系运算符将两边的变量、数据或表达式连接起来,称之为关系表达式。* a <b关系表达式得到的结果是一个逻辑值,真(1)和假(0)逻辑运算符逻辑表达式用逻辑运算符将数据、变量和表达式连接起来的表达式。* 结果是一个逻辑值(0,1)* 判断一个数是否为真的时候,为0时为假,其他任何非0的数据都是真。5.短路.原创 2021-06-09 12:58:54 · 475 阅读 · 0 评论 -
C语言06 ---算术运算符
算术运算符:C语言提供和了大量运算符来处理数据算数运算符:几点要注意:用*号和/号代替乘法和除法对于整数部分采用舍弃小数的方式,不是四舍五入。对于浮点数的除法能够获取一个相对逼近的值。%是求余数的意思,两边的操作数必须是整数。“目”的解释我们把运算符作用的运算对象称之为操作数,运算符是单目运算符还是双目运算符,取决于他们能操作的操作数。表达式用运算符和括号将操作数连接起来的式子,我们称之为表达式。* 1+1* a+b* ‘a’+‘b’* a+b+pow(a,b)+‘c.原创 2021-06-09 08:55:28 · 75 阅读 · 0 评论 -
C语言05---字符和字符串
字符类型其实是一个特殊的整数类型.字符类型是一个特殊的整数类型,因此它也有取值范围. signed char -128-127。和 unsigned char 0-255字符类型和普通整数类型的不同之处.C语言规定来整数的默认修饰符石signed,但是char型没有默认,所以声明的时候根据需要最好加上signed和unsigned修饰.存放在字符类型中的变量,都可以被解释为ASCII码字符表中对应的字符.https://fishc.com.cn/thread-67427-1-1.html字.原创 2021-06-09 08:07:01 · 260 阅读 · 0 评论 -
C语言04 --- 取值范围
1.比特位和字节CPU能读懂的最小单位是比特位,只能存储0和1内存单位的最小寻址单位是字节,1B = 8bit2. 二进制、十进制、十六进制3.进制的转换:1.按权相加法:2.有符号位:如果第一位是1,则该位的权不变,但是要乘以-13.十进制 -》 二进制除以2,取余数。4.二进制 -》 十六进制3. 符号位存放signed类型的存储单元,由左边第一位表示。1表示负数,0表示正数。5.补码计算机用补码的方式来存储整数值。负数的补码计算方式:* 先取得该数绝对值的二进制形原创 2021-06-08 16:50:03 · 627 阅读 · 0 评论 -
C语言03--数据类型
数据类型指定变量坑(内存单元)的大小。int float char _Bool 的基本类型。布尔值得定义为什么是_Bool?可以引入<stdbool.h>来使用bool来定义。#include <stdio.h>#include <stdbool.h>#define NUM 99int main(){ bool isOdd; if(NUM%2) isOdd = 1;.原创 2021-06-08 12:32:09 · 42 阅读 · 0 评论 -
C语言 --- 打印和常量
设计一门编程语言,其实就是设计一套规则和约定.只要用户按照正确的规则和约定来输入,那么程序就能正确执行.常量:整型常量: 520,1314,123实型常量: 3.14,5.12字符常量:*普通字符: ‘L’ ‘o’ ‘v’ ‘e’转义字符: ‘\n’ ‘\t’ ‘\b’字符串常量: ”hhdxzz“符号常量: 使用之前必须先定义3.宏定义,定义符号常量#define 标识符 常量其中#define是一条预处理命令(预处理命令都是以“#”开头),我们称之为宏定义命令,它的作用.原创 2021-06-08 10:40:31 · 518 阅读 · 2 评论 -
C语言--变量
变量定义: 确定目标并提供存储空间.&& 在Linux中是前面的运行成功后面的命令才会运行& 在Linux中是gcc test.c -o test && ./test变量和常量是程序处理的两种基本对象.我们把要让CPU处理的数据放在内存中,但如果你没有给它安排一个位置,随意存放,那么你在后面需要再次用到这个数据的时候就再也找不到它了.所以变量的意义就是确定目标并提供存储空间2.变量名为了确定目标,我们需要给变量命名,变量一旦命名,我们就可以通过原创 2021-06-07 21:16:22 · 215 阅读 · 0 评论