C语言
翘指
就知道你小子有眼光,又来学技术啦?
展开
-
快速理解栈和队列的概念
栈和队列的基本概念 在数组中,我们可以通过索引(下标)随机访问元素,但是,在某些情况下,我们可能 需要限制处理顺序,这就产生了栈和队列这两种功能受限的线性结构 栈和队列对于两种不同的处理顺序,以及两个相应的线性数据结构 栈:先进后出 队列:先进先出 现实生活中许多的事物都遵循着栈和队列的处理顺序 栈:举个例子,比如一筐衣服,又要往里面放进去一些衣服,那么最开始放进去的想拿的话,必须把上面 的衣服都拿出来之后,才可以拿最开始...原创 2022-04-10 21:29:05 · 416 阅读 · 0 评论 -
深度理解单链表
以自行车的链条来比喻我们的单链表,或者双链表单链表是线性表的一种,因为从逻辑上来看单链表是一条线节点由指针域和数据域组成,所以一个节点含有两个不同类型的元素,那么我们学过的知识中,那种数据类型可以保存不同类型的元素呢,那就是结构体,所以我们可以用结构体来定义一个节点struct node{ int id;//数据域,节点要保存的数据 struct node*next://指针成员,用于指向下一节点};单链表只要知道一个节点,那么就可以知道之后的任意节点位置,直接通过...原创 2022-04-10 16:33:28 · 1822 阅读 · 2 评论 -
c语言知识点总结大全(史上最全)
1. C语言中规定,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线,而且标识符不能是C语言的关键字。2.scanf函数的一般格式是:3.scanf(格式控制,地址表列)4.逻辑与“&&”,逻辑或“ll ”,逻辑非“!”逻辑与运算符“&&”,当参与运算的两个量都为真时,结果才是真,否则为假;逻辑或运算符“ll ”,当参与运算的两个量有一个为真时,结果是真,否则为假;逻辑非运算符“!”,当参与运算的量为真时,结果才是..原创 2022-04-03 19:36:15 · 47674 阅读 · 1 评论 -
顺序表进阶(二)
用指针实现一下顺序表的操作#include<stdlib.h>//因为要申请动态内存,所以得添加用来申请动态内存的头文件#include<stdio.h>#include<string.h>//因为要用到memset逐字节赋值//得到一个动态数组 initArr//把动态数组的地址返回给buff,改变最大容量,内存的初始化int*initArr(int*max)//max=&maxsize,对maxsize做解引用,就可以改变maxsize..原创 2022-03-20 21:08:26 · 407 阅读 · 0 评论 -
顺序表(一)
如何在书架上摆放图书?线性表:这个结构在逻辑上是一条线顺序表:计算机的一种存储方式,可以以数组的形式来存储数据顺序表的特点:一:容器里面的元素存储方式是排列在一起的。类似于数组的形式二:顺序表结构中,容器存储的元素地址必须是连续的三:可以通过首地址,然后通过指针偏移就能访问所有的元素;//malloc可以拿书架来举例子,我们要往一个书架里面放书,必须要知道的是书架的结构将顺序表比作是书架,书架要用来摆放一些图书顺序表的操作:一:要有新书的加入 元素的增加二:找指定的书.原创 2022-03-20 14:18:03 · 456 阅读 · 0 评论 -
学指针,一定要学这几个特殊指针
什么是指针?指针是地址,这个指针有类型(基类型)什么是指针变量:是一个变量,只不过这个变量保存的地址一:指针型函数:是一个函数,只不过这个函数的返回值是一个指针;二:函数型指针变量;是一个变量,不过指向的是函数,因为指针型函数返回的是指针(地址),所以也就是指向指针函数的返回值char*fun1(){ char ch = 'A';//ch是一个局部变量,作用范围在fun1函数中 char*p = &ch; return p;}把从堆区申请10个整形大小...原创 2022-03-19 18:43:30 · 378 阅读 · 0 评论 -
排序算法
排序算法从内存的角度上来说分成内排序和外排序内排序:要排序的数据在内存上外排序:要排序的数据在外存上一:冒泡排序:可以理解为鱼图泡泡(大泡泡在最上面)冒泡排序是依次进行比较,比如一数据63974,使用冒泡排序的话就是先将63进行比较,比较出大的,然后在用大的和后面的进行比较,6和3比,6大,6在和9进行比较,以此类推,所以冒泡排序的话最上面的一定是最大的,比较交换位置的时候,比如说6和3,要先将3拿出来放在一个容器中,然后将6放在3 的位置上,再将3拿出来放在6的位置上这就完成了一次原创 2022-03-14 01:13:33 · 598 阅读 · 0 评论 -
指针进阶二
有关指针的各种函数在使用这些函数之前需要加上头文件<stdlib.h>一:malloc(要申请的字节数)int * p = (int*)malloc(100);//100是我们申请的内存空间,因为是空间内存,也要有类型,指针P的基类型是int*,那么P保存的内存的类型也是int*类型//所以我们要在malloc前面加上一个强转、//使用malloc函数从堆区中申请100字数大小的内存空间,malloc函数会返回这片空间的首地址;再把这个首地址强制转换成int*类型给指针变量Pmal.原创 2022-03-12 17:44:59 · 530 阅读 · 0 评论 -
指针进阶(一)
一:内存四区在系统为程序开辟内存时,将内存区域分为4块,分别为:栈区:存放函数的形参、局部变量等。由编译器自动分配和释放,当函数执行完毕时自动释放堆区:用于动态内存的申请与释放,一般由程序员手动分配和释放,若程序员不释放,则程序结束时由操作系统回收。全局静态常量区(全局区):存放常量(一般是字符串常量和其他常量)、全局变量和静态变量,在程序结束后由操作系统释放。代码区:存放可执行的代码,一般为cpu执行的机器指令。二:结构体指针;结构体类型的定义:struct 结构体类型名 struct.原创 2022-03-06 22:18:05 · 311 阅读 · 0 评论 -
指针基础入门级教程
//一:内存地址:在计算机科学中,内存中每个用于数据存取的基本单位,都被赋予一个唯一的序号,称为地址,也叫作内存地址//(可以理解成内存是一个城市,内存地址就是这个城市中的每个房子的具体位置)//在VS中每一个内存编号的大小都是4字节(所有的编号大小都是4字节)地址:就是内存中的地址编号如int a = 10; printf("%p\n", &a);'&'是取址符,这里的&a是取变量a的地址,以%p的格式输出地址指针:为了方便访问内存中的内容,给每一个内存单元一个编号.原创 2022-03-05 23:58:19 · 275 阅读 · 0 评论 -
文件操作三
//读取文本文件的字符串feof函数:判断文件指针是否到了文件末尾,如果到了文件末尾就返回一个真(非零),否则返回一个假(零)feof(文件指针)char str1[1024] = "\0";//定义字符数组,这个数组能够装的下文件中的数据int x = 0;//x变量作为数组的下标,来使用字符数组元素保存数据while (!feof(file))//如果没有到末尾,就要继续读取字符,但是feof函数没有到末尾的话会返回一个0值,所以要加一个!{ str[x] = fgetc(file);//原创 2022-03-05 16:53:57 · 85 阅读 · 0 评论 -
文件操作二
//用C访问文件数据的步骤;一; 打开文件//用到函数fopen(“文件路径”,"打开文件方式");//文件路径可以用文件名表示//二:用文件指针访问文件://文件指针定义格式:FILE *文件指针名字;//指针如果只定义不辅助,那么他就是个野指针//所以一般会赋值一个NULL(空),比如:FILE*fp=NULL;#include<stdio.h>int main(){ FILE * fp = NULL;//定义一个文件指针 fp = fopen("1.1txt",.原创 2022-02-27 20:27:16 · 377 阅读 · 0 评论 -
文件操作一
文件操作:文件有不同的类型:1:程序文件:用来储存代码的文件;2:数据文件:此文件的内容不是程序代码,是程序运行时读写操作的文件文件的概念:每个文件都需要唯一的文件标识,也就是文件名,以供用户使用文件由三个部分组成 : 一: 文件路径:1:绝对路径:从磁盘的根目录下开始到目标文件 2:相对路径:相对文件夹下,从当前项目下开始,到目标文件举例说明绝对路径和相对路径的区别:我的住址就是绝对路径,是绝对可以找到我的地方,而相对路径就是超市对面...原创 2022-02-26 22:39:16 · 835 阅读 · 0 评论 -
什么是枚举
//枚举:把所有的可能都列举出来,我们在进行一个选择‘//枚举类型的声明//格式:enum 类型名{ 所有可能的结果,他们之间用逗号进行连接}//比如//enum direct{ 上,下,左,右};//枚举列表里面的是一个符号,命名规则要符合标识符的命名规则(可以使用中文)//枚举的元素有默认值,第一个元素默认是0,往后依次加一//在C语言中,枚举类型和int类型大小一样,都是4个字节//enum direct player // player表示变量,能储存的范围是所有的枚举元素//.原创 2022-02-24 21:52:13 · 251 阅读 · 0 评论 -
结构体类型一
--FLIE--当前编译的文件名--FUNCTION--当前所在函数的函数名--DATE--编译日期--TIME--编译时间以上格式占位符都用%S--LINE--当前行数占位符用%dtypedef 类型名 小名只能用于替换类型名自定义数据类型:用户自己建立的数据类型比如:有5个学生,我们要保存他们的信息,这些信息包括学生,姓名,考试成绩我们如何写代码来保存这些数据呢思路一:通过设置好多个变量来存储思路二;自己设置一个类型,可以储存这些东西(相当于多个类型的融合)结构体..原创 2022-02-23 22:21:21 · 267 阅读 · 0 评论 -
条件编译的几种格式
/#include<stdio.h> //void main() //{ //#if 1<3 // printf("hello,world\n"); //#else // printf("hello\n"); //#endif // //} // 如果if后面的表达式为真则会执行后面跟的语句序列,否则执行else后面的 //#include<stdio...原创 2022-02-22 23:54:30 · 439 阅读 · 0 评论 -
局部变量和全局变量
根据作用域不同将变量分为局部变量和全局变量 局部变量:在函数内定义的变量 作用范围:从定义开始往下的作用域 出了作用域之后内存就会被释放,不能在使用 如: 1 2 3 4 5 6 7 8 9 10 11 12 13 { int sun =0; { printf("%d",sun); ...原创 2022-02-21 00:35:54 · 2286 阅读 · 0 评论 -
字符数组二(有关字符串的函数)
有关字符串的函数包含有关字符串函数的头文件:#include<string.h>字符串大小比较函数:strcmp(地址一,地址二);返回值为0则说明两个字符串的大小相等,若小于0则说明字符串一大小小于字符串二若大于0则说明字符串一大于字符串二比较的是ACSII码的值,依次进行比较,strcat(地址一,地址二);字符串连接函数后者连接在前者的开头,但要求第一个的数组大小要可以容纳下第二个数组的连接计算字符串长度的函数:strlen(数组名)这里要注意计算字符串的长度,不计算原创 2022-02-19 23:17:33 · 390 阅读 · 0 评论 -
循环与分支
if (表达式)语句序列;表达式的值为真则执行语句序列,为假则不执行if(表达式)语句序列;else(表达式)语句序列;判断表达式一的值 为真则执行语句序列一,否则执行语句序列2if(表达式)语句序列;else if (表达式)语句序列;else语句序列判断表达一的值为真则执行,为假则判断表达式二的值,为真则执行,若一二的值都为假,那么执行直接执行语句序列3while(表达式){ 1 循环体; }原创 2022-02-19 17:55:09 · 204 阅读 · 0 评论 -
字符数组一
字符数组: 字符数组:char arr[10] = { 'a', 'b', 'c', 'd', 'e' }; 没有被初始化的字符数组元素将被默认为ASCII码为0的'\0'保存字符串的两种方法:一:使用字符数组进行保存:定义字符串的时候可以不加双引号二:使用指针进行保存一个字符占一个字节,一个汉字占两个字节初始化字符数组的时候也可以用汉字字符串在计算内存时候会在末尾加上一个ASCII码值为0的'\0'如何理解字符数组保存的时候是保存的字符还是字符串:方法一:利用数组的大小可.原创 2022-02-19 04:01:46 · 490 阅读 · 0 评论 -
如何用图形库输出一个点
#include<stdio.h>//输入输出的头文件//#include<"easyX.h">打开图形库的工具箱#include <graphics.h>//打开图形库的工具箱int main(){initgraph(640,480);//初始化图形库窗口 宽:640,高:480//画一个点;putpixel(300,300, RED);//x坐标,y坐标,颜色system("pause");...原创 2022-02-18 19:45:06 · 118 阅读 · 0 评论 -
如何输出一个二维数组
以arr[3][4]为例子,想要将他的元素一一输出,可以一行一行的输出,先输出第0行然后在输出第一行,依次类推 输出第0行的代码块如下: 1 2 3 4 5 6 7 8 9 10 #include<stdio.h> int main() { int arr[3][4] = {1,2,3,4,5,6,7,8,9 }; for (i...原创 2022-02-18 19:42:50 · 10063 阅读 · 4 评论 -
用图形库输出一个点
#include<stdio.h>//输入输出的头文件//#include<"easyX.h">打开图形库的工具箱#include <graphics.h>//打开图形库的工具箱int main(){ initgraph(640, 480);//初始化图形库窗口 宽:640,高:480 //画一个点; putpixel(300, 300, RED);//x坐标,y坐标,颜色 system("pause"); //getcha...原创 2022-02-18 19:37:19 · 165 阅读 · 0 评论 -
输出一个二维数组
以arr[3][4]为例子,想要将他的元素一一输出,可以一行一行的输出,先输出第0行然后在输出第一行,依次类推 输出第0行的代码块如下: 1 2 3 4 5 6 7 8 9 10 #include<stdio.h> int main() { int arr[3][4] = {1,2,3,4,5,6,7,8,9 }; for (i...原创 2022-02-18 12:01:54 · 6352 阅读 · 3 评论 -
如何从键盘赋值给所有的数组元素
#include<stdio.h>int main(){ int arr[10] = { 0 }; for (int j = 0; j <= 9; j++) { scanf("%d", &arr[j]); } for (int j = 0; j <= 9; j++) { printf("%d ", arr[j]); } return 0;}...原创 2022-02-17 23:07:54 · 2565 阅读 · 0 评论 -
用C实现输出1到100之间的奇数
代码块 1 2 3 4 5 6 7 8 9 10 11 #include<stdio.h> int main() { for (int i =1; i <=100; i++) { if (i %2 ==0) continue; printf("%...原创 2022-02-17 12:10:19 · 556 阅读 · 0 评论 -
用C语言实现输出一到100之间的奇数
代码块 1 2 3 4 5 6 7 8 9 10 11 #include<stdio.h> int main() { for (int i =1; i <=100; i++) { if (i %2 ==0) continue; printf("%...原创 2022-02-17 12:08:16 · 1818 阅读 · 0 评论 -
使用C双层for循环输出一个99乘法表
代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 #include<stdio.h> int main() { for (int i =1; i <=10; i++) { for (int j =1; j <=10; j++) pr...原创 2022-02-17 11:49:19 · 2963 阅读 · 1 评论