偏底层语言入门
C / C++
Rainbow-彩虹桥
# define Myself " 别怕路长梦远,总有星河照耀!"
展开
-
SeqList顺序表原文件
#include"SeqList.h"void SeqListInit(SL* s) { s->arr = (SLDataType*)malloc(sizeof(SLDataType) * 10);//动态开辟内存。 if (s->size==NULL) { printf("申请内存失败!\n"); exit(-1); } s->size = 0; s->capicity = 20;}void SeqListDistory(SL* ps){ free原创 2021-04-21 14:25:41 · 81 阅读 · 0 评论 -
常见的数据结构及算法2021-4-7
/**************************************************************************学习思路:1.多画图、多思考。 2.死磕代码、多写代码。3.多刷题。参考 LeetCode、牛客网、剑指offer 三个平台的资料。***************************************************************************////算法是指对解题方案的准确而完整的描述,简单的说算法就是解决问题的原创 2021-04-07 10:19:41 · 244 阅读 · 0 评论 -
时间/空间复杂度
算法的时间复杂度时间复杂度:计算代码的大概执行次数。而不是表面理解的计算时间。空间复杂度:计算代码大概定义的变量的个数。考虑临时占用内存空间的量度。如今计算机的存储空间足够大,有些算法可以牺牲空间以换取时间效率。就是通常所说的:用空间换时间的做法。只有在嵌入式开发的领域,比较在意存储的空间大小。采用的方法:O(n) O(大写)的渐进表示法。...原创 2021-04-30 16:45:42 · 129 阅读 · 0 评论 -
数据结构与算法笔记01-2021-03-25
//时间:2021年3月23日21:15:28/**** 数据结构与算法 ****//*******************************学习思路:1.多画图、多思考。 2.死磕代码、多写代码。3.多刷题。参考 LeetCode、牛客网、剑指offer 三个平台的资料。*********************************///算法是指对解题方案的准确而完整的描述,简单的说算法就是解决问题的操作步骤。程序可以描述算法。// 算法的基本特征:可行性(步骤可以实现),确定原创 2021-03-25 13:50:40 · 91 阅读 · 0 评论 -
一个算法揭示世界的二八定律
package AlgorithmPractice;import java.util.Arrays;/* * @Description: * @Author: Rainbow * @version:v1.0 * @date:2021年6月4日下午1:56:19 * * * 题目二:假设游戏一开始有100个人,每个人有100元钱,每轮每个人都要把自己的 * 一元钱等概率,随机的给别人,(不能是自己),如果没钱则,不需要给别人, * 如果游戏发生了很多轮,原创 2021-06-08 17:33:02 · 1439 阅读 · 0 评论 -
SeqLidst 测试文件
#include"Seqlist.h"//测试顺序表头尾的插入void TestSeqList1(){ SeqList s; SeqListInit(&s); SeqListPushBack(&s,1); SeqListPushBack(&s,2); SeqListPushBack(&s,3); SeqListPushBack(&s,4); SeqListPushBack(&s,5); SeqListPushBack(&s,6);原创 2021-04-21 14:27:40 · 89 阅读 · 0 评论 -
SeqList头文件
#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>//为 assert 断言提供库typedef int SLDataType;#define N 10struct SeqList_s{ SLDataType arr[N]; //静态数据表,元素大小固定。 int size;};//动态顺序表(大小可变)typedef struct SeqList{ SLDataT原创 2021-04-21 14:23:23 · 1050 阅读 · 0 评论 -
条件编译
时间:2021年4月14日13:38:52条件编译:#ifdef #else #endif#ifdef 满足条件编译,不满足则跳过编译。#include <stdio.h>#define LENGTH 10#define JUST_CHECKINGint main(void){ int a = 10; int arr[10] = { 0 }; for (size_t i = 0; i < LENGTH; i++) { arr[i] = i; printf("%原创 2021-04-14 20:45:01 · 66 阅读 · 0 评论 -
宏定义相关知识点
//#difine 定义标识符之后 尽量不使用分号。 #define 宏定义 可以带参数。宏是完全替换,而不是传参的。#include<stdio.h>#define SUB(x,y) x-y#define MUL(x) x*x #define DOUBLE(x) ((x)+(x)) //定义宏的时候不要吝啬括号。存在计算优先级的问题。int main(void){ int a = SUB(10, 2); //10-2=8 printf("%d \n",a); printf.原创 2021-04-14 12:54:46 · 215 阅读 · 0 评论 -
编写日志,使用预定义符号。
//预定义符号 /* __FILE__ 当前文件路径 __LINE__ 当前行数 __DATE__ 当前日期 __TIME__ 当前时间 */#include<stdio.h>int main(void){ printf("%s \n", __FILE__);//文件路径 printf("%d \n", __LINE__); printf("%s \n", __DATE__); printf("%s \n", __TIME__); printf原创 2021-04-13 16:56:13 · 85 阅读 · 0 评论 -
结构体大小-内存对齐
知识点:结构体内存存储对齐。// 结构体对齐的规律:// 1.第一个成员在与结构体变量偏移量为0的地址处,就是第一个变量放在结构体的分配的起始地址处。// 2.其他成员变量要对齐到对对齐数的整数倍的地址处。对齐数:默认值与成员大小的较小值。VS默认值为8.// 3.结构体总大小:为最大对齐数的整数倍。 GCC 没有默认对齐数。成员大小就是对齐数。为什么存在内存对齐:1.平台原因:某些硬件平台只能从特定的的地址处取数据,int 在4 的整数倍处读取数据。2.性能原因:数据结构(尤其原创 2021-04-11 13:53:37 · 155 阅读 · 1 评论 -
柔性数组-2021-4-11
柔性数组成员:在结构体中,最后数组成员未指定大小。数组的大小可以调整,这个数组就称为柔性数组成员。#include<stdio.h>#include<malloc.h>struct s{ int a; char arr[];// 柔性数组成员:在结构体中,最后数组成员未指定大小。数组的大小可以调整,这个数组就称为柔性数组成员}; // char arr[0]; 方块零--这样写也可以。int main(void) // malloc原创 2021-04-11 13:40:36 · 147 阅读 · 2 评论 -
malloc 传址
#include<stdio.h>#include<malloc.h>#include<string.h>void GetMemery(char** p){ * p = (char*)malloc(40); //还可以return P 找一个变量接受函数的返回值。}void test(){ char * tpr = NULL; GetMemery(&tpr);//若传tpr 则是传值给P ,P是局部变量,出了局部范围则无效,故tpr 还是空指针原创 2021-04-10 00:26:54 · 153 阅读 · 0 评论 -
动态内存分配函数的使用/ malloc free calloc realloc
动态内存分配:时间:2021年4月8日12:56:31动态内存分配函数:malloc \ free \ calloc \ realloc/* malloc 是动态申请一块连续可用的内存空间,并返回指向这块空间的指针,如果开辟失败,则返回空指针。free 是释放和回收内存空间。malloc 的返回值一定要做检查,申请完的空间,要用free 函数释放掉,它俩成对使用。否则影响后面的程序使用该内存空间。*///常见的动态内存错误。//#include<string.h>//打印错误的原创 2021-04-09 12:42:33 · 167 阅读 · 0 评论 -
2020-11-19
笔记//2020.11.19 黑客攻击系统-功能菜单一、开发要求1.系统要求:windows 7/8/10。2.开发工具:visual Studio 2019。二、项目需求当黑客打开这个攻击系统后,首先看到一个“功能菜单”,以便选择黑客所选择所需的功能。需求如下:网站404攻击网站篡改攻击网站攻击记录DNS攻击服务器重启攻击三、项目实现打开VS2019 新建一个项目和源文件。源文件选C++。#include<windows.h>#include<iostr原创 2020-11-19 19:38:49 · 87 阅读 · 0 评论 -
自定义类型知识点总结:结构体、枚举、联合
自定义类型知识点总结:结构体、枚举、联合。结构体:一些不同类型成员变量的集合。1.结构体类型的声明2.结构体的自引用3.结构体变量的定义和初始化4.结构体内存对齐5.结构体传参6.结构体实现位段(位段的填充&可移植性)枚举:1.枚举类型的定义2.枚举的优点:为什么不使用 #define 定义常量。为啥要用枚举呢。1.增加代码的可读性和可维护性。2.和#define 相比枚举有类型检查,更加严谨。3.一次可以定义多个常量,方便使用,便于调试 ,防止命名污染(封装)。3.枚原创 2021-04-06 21:54:28 · 70 阅读 · 0 评论 -
C语言中,字符串的大小比较2021.3.2
#C语言中字符串的大小比较1.使用库函数strcmp.2.包含头文件string.h3.比较字符串A与B 的大小 strcmp(“A”,“B”)原创 2021-03-02 20:44:56 · 425 阅读 · 0 评论 -
C++程序员知识树/*新手成为程序员的建议学习之路*/
开发语言C/C++ 编程语言数据结构/算法(*****)网络层计算机网络原理TCP/IP 协议UDP网络IO数据库 数据库系统原理 常见的数据库管理系统(DBMS)计算机 计算机科学基础知识 计算机系统结构 计算机组成原理 操作系统(Linux/Windows)编程练习 集成开发环境IDE (visual stdio 2019) 在线环境编程习题练习(牛客网+题目训练)...原创 2020-12-13 19:11:55 · 162 阅读 · 0 评论 -
C语言运算符
C语言运算符1.乘法运算符 :*a的平方(a^2)表示为:a*a2.除法用算符 :/截断现象=小数部分丢失。3.求模运算:%求模运算用于整数运算,含在数学中的含义是求余数计算。4.递增运算符:++5.递减运算符:–6.计算优先级问题优先级圆括号可嵌套。7.sizeof 运算符求运算对象的字节大小。1字节=8位,单位:B,KB,MB,TB.字节之间的进制是1024.7.常用数学计算库函数:(1)求n得平方根:sqrt(n)(2)求a得指数:pow(a,b)(3)求绝对值|x|:原创 2020-12-03 17:10:20 · 2358 阅读 · 0 评论 -
2020-11-19
编程学习方法#inclide<stdio.h>int main (void)//C语言入门方法:{1.掌握程序员的编程思维,思维必语法知识更重要。对于任何一门语言,它的本质其实反映的是一种思维习惯。就像学习英语,其关键的步骤就是如何学会美国人/英国人的表达思维。用他们的思维去描述一件事,达到对语言的运用。这就是任何一门语言的目的。2.在学习中不断试错,并养成记录解决问题的习惯。这对于任何一门学习都是极其重要的过程,不要刻意去记忆在编程过程中用到的语法规则,犯了错误查找资料并及时纠原创 2020-11-19 18:49:55 · 127 阅读 · 0 评论