c语言基础
几两清梦
这个作者很懒,什么都没留下…
展开
-
进程间通信的总结(一)
一、Socket套接字基本特点: socket是一种接口技术,被抽象成一个文件进行操作 ,可以让同一台计算机的进程之间进行通信,也可以让不同计算机的进程进行通信(网络)二、同一台计算机的进程间通信 底层需要借助socket文件,进行不同进程的通信 int socket(int domain, int type, int protocol); 功能:创建socket对象 domain: AF_UNIX\AF_LOCAL 本地通...原创 2022-03-02 19:21:27 · 363 阅读 · 0 评论 -
有关于算法的总结
算法: 数据结构中的算法,指的是数据结构所具备的功能 解决特定问题的方法,它是前辈们的一些优秀的经验总结 算法的五大特性: 输入: 算法具有0个或多个输入。 输出: 算法至少有1个或多个输出。 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成。 确定性:算法中的每一步都有确定的含义,不会出现二义性。 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完 如何评价一...原创 2022-03-01 19:08:36 · 398 阅读 · 0 评论 -
关于红黑树的一些总结
红黑树:R-B Tree 也是一颗自平衡的有序二叉树,但它的平衡不是根据子树的高度来调整的 而是给每个节点设置颜色,通过颜色的关系达到平衡红黑树的特性: 1、每个节点或者是黑色或者是红色 2、根节点必须是黑色 3、每个叶子节点(NULL)是黑色 [注意:这里的叶子节点,是指空的叶子节点(NULL)] 4、如果一个节点是红色,则它的子节点必须是黑色 不能已有两个连续的红色 5、从从一个节点到该节点的所有子孙节点的所有路径上,...原创 2022-03-01 19:03:58 · 796 阅读 · 0 评论 -
2021.11.30day22 C语言关于结构的笔记
结构: 结构是程序员自己设计的一种数据类型,用于描述一个事物的各项信息, 由若干个不同的基础数据类型组成 设计: struct 结构名(自己起名字) { 类型 成员名; /* data */ }; 定义结构变量: (struct 结构名)结构变量名; 注意:定义结构变量,不能省略struct ...原创 2021-11-30 11:16:37 · 147 阅读 · 0 评论 -
2021.11.24 day21 C语言宏函数的笔记
#define 定义宏 宏常量 #define MAX 50 优点:提高可读性、提高可扩展性(批量修改)、提高安全性 还可以与case配合使用 注意:宏常量名建议全部大写,末尾不要加分号 {函数名、局部变量小写+下划线、全局变量首字母大写、指针变量p、数组arr、字符串str} ...原创 2021-11-24 19:50:52 · 330 阅读 · 0 评论 -
2021.11.22 day20 C语言字符串相关函数笔记
字符串相关常用函数: #include <string.h> #include <assert.h> assert(NULL != str);//假设条件正确时,程序执行,否则直接打断程序且报错 size_t strlen(const char *s); 功能:计算字符串长度 结果不包括字符'\0' char *strcpy(char *dest,const char *src); 功能:把s...原创 2021-11-22 19:28:21 · 98 阅读 · 0 评论 -
2021.11.20 C语言判断是否是回文串的函数(仅供参考)
先说思路: 1、首先是用户输入一个字符串 2、具体也不知道多长,普通变量接不了,用数组肯定方便很多 3、判断是与否的问题用bool最为合适 4、size_t(可以搜一下专门用来计算长度的整型) 5、用循环先计算长度(未知长度用while会更好) 6、再接着判断首位与末位是否相同,这里再说一下while遇到'\0'才会停止,'\0'也计入了 7、所以要长度-1才是末位 ...原创 2021-11-20 11:20:29 · 1063 阅读 · 0 评论 -
2021.11.20 day19 C语言关于字符串的基础笔记
字符串字符: 字符就是符号图案,在计算机中以整数形式存储的,需要显示时 会根据ASCII码表中的对应关系,来显示出相应的图案或符号 字符的输入: scanf("%c",&ch); getchar(); 字符的输出: printf("%c",ch); putchar(ch);串: 是一种数据结构,由一组连续的若干个相同类型的数据组成,对这种数据结构的 处理都是批量性的,在末尾有个结束标...原创 2021-11-20 11:07:38 · 606 阅读 · 0 评论 -
2021.11.18 day18 C语言关于堆内存的笔记
关于堆内存使用的基本笔记罢了原创 2021-11-18 17:23:40 · 437 阅读 · 0 评论 -
C语言二级指针的笔记及其应用
二级指针: 指向指针的指针就是二级指针,里面存储的是指针变量的地址 定义: 类型** 指针名_pp; 赋值: 指针名_pp = &指针变量; 解引用: *指针名_pp <=> 指针变量; **指针名_pp <=> *指针变量 <=> 普通变量 注意:当需要共享指针变量时,就必须使用二级指针include <stdio.h>int main...原创 2021-11-16 18:42:55 · 648 阅读 · 0 评论 -
2021.11.16 day17 C语言指针数组与数组指针的区别
指针数组与数组指针: 指针数组: 是由指针变量组成的数组,他的成员都是类型相同的指针变量 int* arr[长度]; 数组指针: 专门指向数组的指针 int (*arrp)[长度]; 注意:一般在使用堆内存时,可能会使用他们来定义二维数组 指针与数组名的关系: 数组名就是一种特殊的指针,数组名是一个常量,不能修改他的值,他与 数组的内存首地址之间是映射关系,他是没有自己的存储空间...原创 2021-11-16 18:40:36 · 474 阅读 · 0 评论 -
2021.11.15 day17 C语言指针的基础笔记(一)
什么是指针: 指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整型数据 代表的是内存的编号,可以通过这个编号可以访问对应的内存。为什么要使用指针: 1、函数之间是相互独立的,但是有些时候需要共享变量 传参是单向值传递 全局变量容易命名冲突 使用数组还需要额外传递长度 虽然函数之间命名空间是独立的,但是地址空间是同一个, 所以使用指针可以解决这个问题 2、由于函数之间是值传递(...原创 2021-11-15 18:45:10 · 117 阅读 · 0 评论 -
2021.11.12 day16 C语言函数递归的笔记基本整理(外加汉诺塔练习)
函数递归: 函数自己调用自己的行为就叫做递归,可能会导致死循环、资源耗尽的情况发生 递归是分治算法的具体思想,就是把一个大二复杂的问题,分解成若干个相同的小问题 ,直到问题全部解决 1、递归必须要有出口 2、解决小问题 3、调用自己 递归调用函数每一次递归调用都会在栈内存产生一份自己的拷贝, 直到到达出口,才一层层向上释放栈内存,因此使用递归非常浪费内存 ,与循环相比速度非常慢,能用循环解决的问题就不要使用递归 ...原创 2021-11-12 19:47:01 · 718 阅读 · 0 评论 -
2021-11-12 百钱百鸡(仅供参考)
#include <stdio.h>int main(int argc,const char* argv[]){ for(int g=0; g<=20; g++) { for(int m=0; m<=33; m++) { int s = 100 - g - m; if(100 == g*5 + m*3 + s/3.0) { printf("%d %d %d\n",g,m,s); } } }}原创 2021-11-12 19:44:00 · 725 阅读 · 0 评论 -
2021.11.11 C语言简易五子棋(仅供参考)
五子棋: 1、定义棋盘类型的二维字符数组 15×15 2、定义变量用记录下棋的位置 3、定义角色变量 char role='@'; 业务逻辑: 棋盘初始化 for(;;) { 1、清理屏幕,显示棋盘 2、落子 判断坐标是否合法,是否已有棋子, 如果非法或有棋子,重新输入...原创 2021-11-11 19:14:23 · 2580 阅读 · 0 评论 -
2021..11.11 day15 关于C语言全局变量和局部变量的基础笔记
局部变量和全局变量 局部变量:定义在函数内 存储位置:stack 栈内存 生命周期:从函数调用开始到函数结束 作用范围:只能在函数内使用 全局变量:定义在函数外 存储位置:data(初始化)或者bss(未初始化) 生命周期:从main运行前到程序结束后才释放 作用范围:程序的任何位置都可以使用 块变量:定义在if/for/while语句块内 存储位置:stack 栈内存...原创 2021-11-11 19:11:17 · 112 阅读 · 0 评论 -
2021-11-10 day14 关于c语言类型限定符的基础笔记
类型限定符: auto 用于定义自动申请、自动释放内存的变量(局部变量),不加就代表加 不能使用auto修饰全局变量 C11中auto用于自动定义类型 const 用于“保护”变量不被明显的修改 注意:如果用const修饰初始化过的全局变量(data),存储位置会改为代码段(text) 此时就不能强制修改了 extern 用于声明变量 被extern...原创 2021-11-10 18:32:00 · 407 阅读 · 0 评论 -
2021.11.09 函数基础(2)
函数: 一段具有某项功能的代码段,是C语言中管理代码的最小单位 把代码封装成一个一个的函数,可以方便管理和调用代码 函数分类: 标准库函数: C语言标准委员会为C语言以函数形式提供的一套常用的基础功能 被封转在lib.so、libm.so等库中,使用时需要提供头文件 通过函数名(参数)就可以调用该函数 int isalnum(int c); 功能:...原创 2021-11-09 19:47:36 · 82 阅读 · 0 评论 -
2021.11.09 day13 位运算符的基础笔记
位运算符:& | ~ ^ << >> A & B 按位相与 A | B 按位相或 ~A 按位求反 优先级最高 A ^ B 按位异或 相同为0,相异为1 A << n 把A的补码向左移n位,左边丢弃,右边补0 A >> n 把A的补码向右移n位,右边丢弃,左边补符号位运算符优先级:单目 算术 位 关系 逻辑...原创 2021-11-09 19:44:26 · 157 阅读 · 0 评论 -
2021.11.08 day12 c语言进制转换笔记
进制转换: 为什么要使用二进制、八进制、十六进制: 因为现在的CPU只能识别高低两种电平,只能对二进制的数据进行计算 由于二进制数据虽然可以被计算机识别计算,但是不方便书写、记录 把二进制的数据转换成八进制为了方便把数据记录在文件中 由于CPU的位数不断增加,由于早期的8位逐渐增加到现在的64位 因此8进制不再符合需求了,所以才发展出了16进制,由于历史原因 8进制还不能退出历史舞台 十...原创 2021-11-08 19:47:29 · 183 阅读 · 0 评论 -
2021.11.6 day11 函数(1)
我所理解的函数,好比工具,怎么说呢?就是你用到什么拿什么。你吃饭是一项程序,对吧,你吃饭不可能手抓吧?得拿筷子或勺子,方便。维基百科中的定义呢,函数是指一段可以直接被另一段程序或代码引用的程序或代码。也叫做子程序、(OOP中)方法。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C语言中,子程序是由一个主函数和若干个函数构成的。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函..原创 2021-11-06 15:43:47 · 69 阅读 · 0 评论 -
PAT 乙级 1001 害死人不偿命的(3n+1)猜想(一)
卡拉兹(Callatz)猜想:对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数n,...原创 2021-11-03 19:59:14 · 68 阅读 · 0 评论 -
2021.11.3 day10 C语言关于二维数组的基础笔记
二维数组: 一维数组可以看成把变量排成一排,通过编号访问 二维数组相当于把变量排成一个矩形,通过行号和列号访问 定义: 类型 数组名[行数][列数]; int arr[3][5] 使用:数组名[行下标][列下标] 行下标:0~行数-1 列下标:0~列数-1 遍历:一般需要与双层for循环配合,一般的外层循环负责遍历行 内层循环负责遍历列 for(int i=0;...原创 2021-11-03 19:21:30 · 314 阅读 · 0 评论 -
2021-11-02 PAT厘米换算英尺英寸
7-1 厘米换算英尺英寸 (15 分)如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。输入格式:输入在一行中给出1个正整数,单位是厘米。输出格式:在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。输入样例:170结尾无空行输出样例:5 6代码如下:#include<stdio原创 2021-11-02 20:52:21 · 157 阅读 · 0 评论 -
2021.11.2 day09 C语言关于数组的基础用法
数组: 什么是数组:相同类型变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int arr[5]; 使用: 使用下标表示数组中的变量 arr[下标]; 下标:从零开始,范围:0~数量-1 arr[0],arr[1]...... 遍历: 一般与for循环配合,使用循环变量i当作数组的下标 int arr[5]; for(in...原创 2021-11-02 16:33:07 · 227 阅读 · 0 评论 -
2021.11.1 day08 关于C语言循环语句
一、循环语句for循环语句: 循环是让一段代码反复执行,最终达到你想要的效果的语法 for循环是一种很灵活且很危险的(相比于其他循环语句)一种循环语句 一般使用一个变量来引导for循环的运行,被称为循环变量index for([1];[2];[3]) { [4]; } 1、给循环变量赋初值,只有c99以上才能在此处定义循环变量 gcc -std=gnuc99 2、判断循环变量是否到达边界,为真继续循环 ...原创 2021-11-01 18:11:48 · 143 阅读 · 0 评论 -
2021.10.31 day07 第一周c语言学习汇总
一、学习了关于c语言以及Linux的历史发展BCPL->NewB->C语言->UNIX->Minix->Linux(开源)->gcc编译器二、下载安装了并了解VirtualBox以及UbuntuLinux系统常用命令: 常用命令: ls 显示当前目录下的文件 -a 显示当前目录的隐藏文件 以.开头的文件都是隐藏文件 ctrl+h 可以显示或隐藏 -l 以长格式显示文件的详细信息 ...原创 2021-10-31 21:56:16 · 163 阅读 · 0 评论 -
2021.10.30 day06 C语言关于运算符的基础了解
有颜色的大家一定要注意起来!!!!,作为小白容易犯的错。踩过坑就好啦一、运算符 自变运算符:++/-- 使变量自己的值自动加1或减1 前自变:++num 立即生效 后自变:num++ 下一条语句才生效 注意:不要在一行代码中多次使用自变运算符 算数运算符:+ - * / % /%除数不能为0 整数/整数 结果不会有小数部分,直接去掉小数部分 / %除数不能为0,否则...原创 2021-10-30 22:47:43 · 116 阅读 · 0 评论