自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 拷贝构造以及运算符重载

拷贝构造class Object{private: int value;public: Object(int x=0) :value(x) //缺省构造函数 { cout << "Create Object:" << this << endl; } void Print()const { cout << value << endl; } ~Object() { cout << "Object::~Ob

2022-04-15 23:24:37 314

原创 const 引用 引用的本质 右值引用与指针

引用 const 指针(1) 定义引用时 必须初始化(2) 没有所谓的空引用(3) 没有引用的引用int main() { int a = 10; int& b = a; b += 10; a += 20; int* p = &a; int* s = &b; cout<<p<<endl; cout<<s<<endl; //可以得到 p==s //证明 a和b

2022-04-15 23:10:42 607

原创 信号 发信号 进程接收信号后响应信号

信号信号的概念信号是系统响应某个条件而产生的事件,进程接收>到信号会执行相应的操作。与信号有关的系统调用在“signal.h”头文件中有声明响应信号在键盘上按下 Ctrl+c 时,会给当前终端前台执行的进程发送 SIGINT 信号:正常Ctrl+c 终止执行 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<string.h> #inc

2021-11-14 11:15:58 702

原创 进程间通信(管道)

进程间通信(ipc):管道 信号量 共享内存 消息队列 套接字管道文件:本身在磁盘中,打开文件以后会在内存中分配空间.有名管道:mkfifo,mkfifo();无名管道:pipe();管道为空,读会阻塞管到写满,写会阻塞管道写端关闭,读端返回为0利用管道实现进程间通信一个进程向管道文件写数据一个文件从管道中读数据向管道中写数据 #include<stdio.h> #include<stdlib.h> #include<unistd.h&

2021-11-14 10:50:11 499

原创 fork 进程复制 父子进程共享文件偏移量 exec替换进程

printf函数以及缓冲区先打印hello 在睡眠3s钟去掉 \n 之后 先睡眠3s在打印hello正常认知:代码是顺序执行 printf执行完后才能执行sleep. 由于缓冲区的作用,退出程序才把缓冲去的内容显示到了屏幕上.打印的内容是如何显示到屏幕上的当有以下三种情况时,缓冲区才会把数据传输到标准输出设备(显示器)中进行输出1.缓冲区满2.程序结束时3.强制刷新缓冲区 “\n” fflush(stdout)可以达到此效果缓冲区的内容提交给内核 利用writ

2021-11-14 10:32:54 541

原创 10_10 库文件(静态库 动态库)生成库文件的步骤

库文件:预先编译好的方法的集合静态库:libxx.a共享库:libxx.soprintf() -> 实现在 c库 libc.so库放在 /usr/lib…头文件放在/usr/include静态库的生成先定义一个简单的 减法函数 sub2() 并且在 main2中调用它尝试输出执行结果发生错误 未在main2中声明 sub2函数在main2.c中加上声明 或者 生成sub.h 并在main2.c中 引入头文件 #include"sub.h" 已达到声明的目的再次尝.

2021-10-26 17:34:37 859

原创 10_8 循环队列

Queue.h#pragma once#define MAXSIZE 100//循环队列//1.如何做到 插入和删除时间复杂度都为 O(1)// 把队列想成一个-——环状来用//2.判空判满 浪费一个空间(区分判空和判满的条件)//判空 front==tail//判满 // <1> 队尾下标 > 队头下标 (tail+1)%MAXSIZE==front// <2> 队尾下标 < 队头下标 (tail+1)=front// 通式 (tail+1)

2021-10-21 15:24:25 77

原创 9_13 带头结点双向链表

DuLinkList.h#pragma oncetypedef struct DNode { int data; struct DNode* next; struct DNode* prior;}DNode,*PDNode;//初始化void Init_Dlist(PDNode plist);//头插bool InsertHead(PDNode plist, int val);//尾插bool InsertTail(PDNode plist, int val);//按位

2021-09-20 15:10:27 61

原创 9_10 不带头节点的单链表

LinkList no head.h#pragma once //不带头结点的单链表的结构体设计:typedef struct Node{ int data;//数据域 保存节点有效值 struct Node* next;//指针域 指向下一个节点的地址}Node, * PNode;//增删改查//初始化函数(给头结点赋值)void No_Head_Init_list(PNode* phead);//头插bool No_Head_Insert_Head(PNode* ph

2021-09-20 15:09:20 55

原创 9_4 带头结点的单链表

LinkList.h#pragma oncetypedef int ElemType;typedef struct Node { struct Node* next; ElemType data;}Node, * PNode;//初始化函数(给头结点赋值)void Init_List(PNode plist);//头插bool Insert_Head(PNode plist,ElemType val);//尾插bool Insert_Tail(PNode plist, El

2021-09-14 14:51:25 66

原创 day 15二级指针和二维数组 7_29

二级指针int a3,a2,a1,a0;int *p3,*p2,*p1,*p0;int **s;s+1 => s=&p1 类型 int ** s+1=s+sizeof(int *) //+1 是 +4字节*s+1 => *s =*&p0=p0 *s+1=p0+1 p0+1=a1 p0=&a1;p0+1 => p0+sizeof(int)//+1 是 +4 字节**s+1 **s=**&p0=*p0=a0 **s+1 =&g

2021-08-03 16:37:44 66

原创 Move_Ar 7_29

逆置数组实现数组的MoveO(n) 移动数组元素 左移k位 右移10-k位void Print_Ar(int *ar,int n) { assert(ar != nullptr); int i = 0; while (i < n) { printf("%d ", ar[i]); i++; }}void Swap_Ar(int* ap, int* bp) { assert(ap!=nullptr&&bp!=nullptr); int tmp = *

2021-08-02 18:08:05 77

原创 day 14 7_27 string

int main(){ char stra[] = "lijiale";//字符串自带'\0' char strb[] = { 'l','i','j','i','a','l','e' }; //字符数组中无'\0' int lena = sizeof(stra);//空间大小 计算'\0' lena=8 int lenb = sizeof(strb);//空间大小 strb字符数组中无'\0',lena=7 lena = strlen(stra);//计算字符串长度 遇到'\0'结束 7

2021-08-02 12:55:10 51

原创 day 13 7_25 指针

* 与 &int a=10;int *pa=&a;*&a => *(&a) => a *与&优先级相同 从右向左结合*&ap => *(&ap) =>ap &*ap => &(*ap) =>&a =>ap // *ap是所指之物 (&*ap)是所指之物的地址 // ap存放所指之物的地址 所以(&*ap)=ap数组首元素地址和数组地址int

2021-07-26 11:54:40 64

原创 day 12 7_23指针

int main() { int a = 10; const int b = 10;//必须用常性指针 指向b int* pa = &a;// const int* pa1 = &a;//可以用常性指针 const int* pb = &b; //int *pb=&b *pb=100 error 常变量必须用常性指 针来指向自己 return 0;}...

2021-07-25 18:38:17 72

原创 day 11 7_22 指针与数组

*(解引用) ++ 优先级相同int main() { int ar[5] = { 12,23,34,45,56 }; int* p = ar; int x = 0; int y = 0; x = *p++;// => x=*p p++ x=12 y = *p;//此时指向ar[1] *p=23 printf("%d %d\n", x, y); x = ++ * p;//=> *p=*p+1 *p=24 x=*p 修改了ar[1]=24 y = *p;//*p=2

2021-07-24 16:04:25 63

原创 day 10 7_20

访问数组元素有两种方法数组下标访问 也会退化为指针指针访问int ar[5]={12,23,34,45,56};ar[i] *(ar+i)int *p=ar;p[i] *(p+i) i[p] =>退化为指针 *(i+p);为什么会退化为指针?在函数传参过程中传递数组名,函数用数组来接受,也会退化为用指针接收,这样就会只接收数组首元素地址省空间省时间(避免了每次需要传递数组所有元素的缺点)...

2021-07-24 10:32:51 57

原创 day 9 7_17 数组

#include<stdio.h>#include<stdlib.h>int main(){const int n=10;int a[n]={};//在编译环节 把n替换为10 即(a[10])for(int i=0;i<n;i++){a[i]=rand()%10+1;}return 0;}数组和变量 加了 const 之后必须初始化错误示范:const int m;//错误 初始化必须赋值const int a[5];//错误 初始化必须赋值正

2021-07-20 19:12:24 69

原创 day 6

staticstatic修饰局部变量 修饰的局部变量只执行一次(只创建一次变量) .改变局部变量的生存期(延长变量的生命周期 直到程序运行结束以后才释放).定义的变量在数据区分配内存.如果没有初始化,默认为0.只改变生存期,不改变可见性.#include<stdio.h>void fun(int x) { static int a = x;//只初始化一次 //第一次a=10 //第二次a=12

2021-07-19 20:30:22 73

原创 day 5

constconst 在.cpp下也是一种替换 是在程序的编译阶段进行替换.宏是在预编译阶段进行替换.用const修饰的变量必须初始化值.#include<stdio.h>#include<stdlib.h>int main() { const int a = 10;//编译阶段直接替换 int b = 0; int* p = (int *)&a; *p = 100; b = a;//遇见a直接替换 为10 printf("a=%d ", a);//直

2021-07-19 14:10:26 64

原创 day 8 7_16循环

跳转语句break,continue,goto,returnbreak:只能跳出一层循环continue与break的区别在于 continue语句结束的只是本次循环,而break结束的是整个循环.在for循环中continue会跳转到 for循环中的第三个表达式 ++i位置在while循环中 continue会跳转到while循环的判断语句中去(可能会造成死循环)上图当 i=2 continue 语句跳转到 i<n 然后接着执行循环体 判断i%2==0 结果为真 然后继续跳转到 i&

2021-07-17 13:12:19 90

原创 day 7 7_15 逗号表达式的使用 函数返回值的去处

比较三个值的最大值 使用三目运算符比较三个值的最大值 使用三目运算符int Max_Three(int a,int b,int c) { int max = a > b ? a : b;//先找出a和b之间大的一个 return max > c ? max : c;//在用a和b之间最大的和c作比较 求出最大值 然后返回}int main() { int a = 0, b = 0, c = 0; scanf_s("%d,%d,%d", &a, &b, &

2021-07-16 22:24:45 202

原创 习题 day7 上机

给一个正整数要求1.求出它是几位数.2.分别输出每一位数字.3.按逆序输出各位数字,例如原数为321,应输出123.1.求出它是几位数.313313/10 3131/10 33/10 00每次除10就会扔掉最低位 定义一个计数变量 扔掉以为就+1当n=0 此时就可以结束 int Get_Figure(int n) {//计算数字的位数 int figure = 0; while (n>0) { n /= 10; figure++; } retur

2021-07-15 12:10:44 51

原创 day 4

优先级问题 *= 和 +#include<stdio.h>int main() { int a = 2; int b = 4; int c = 6; a *= b + c; //a=a*(b+c) 20 //a=a*b+c 14 printf("a=%d\n", a); return 0;}输出: a=20*=优先级低于+所以a*=b+c即就是a=a*(b+c)

2021-07-13 21:04:27 58

原创 day 3

可见性(作用域)和生存期**作用域(标识符)**指标识符能够被使用的范围;只有在作用域内标识符才可以被使用.此阶段针对编译和链接过程(1)函数中定义的标识符,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域.(2)文件作用域也称全局作用域.定义在所有函数之外的标识符,具有文件作用域,作用域为从定义处到整个源文件结束(向下可见,向上不可见).文件中定义的全局变量和函数都具有文件作用域.生存期也叫生命期(Life time).此阶段针对的是程序的执行过程生命期指的是标识符从程序开始

2021-07-12 23:04:11 47

原创 day 2

#define定义的宏常量宏常量并不开辟空间,无类型,只是一种字符串可以是(常数、表达式、格式串).一般形式为:#define 标识符 字符串.只在预编译环节起作用,在函数中看到标识符后直接替换.在宏的后面不能有分号,否则在遇到标识符会把分号连带着与标识符替换.用const关键字修饰的变量,称为常变量.const int a=100; //用const 修饰后变量不能修改 只能读取枚举常量枚举常量是受到限制的整型量.#include<stdio.h>enum week {

2021-07-12 18:30:34 52

原创 day 1

一个源程序可以由一个或者多个源文件组成.一个源文件由一个或者多个函数组成.一个源程序无论由多少个文件组成,都有一个且只能有一个main函数,即主函数C语言基本数据类型整型整型: int 4byte;短整型: short 2byte;字符型: char 1byte;长整型: long int 4byte;长整型: long long 8byte浮点型单精度: float 4

2021-07-11 16:14:31 73

原创 2020-11-02

在这里插入代码片//顺序表部分功能实现 新手上路 请多指教#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2#define MAX_SIZE 100typedef struct{ int *elem; int length;//表长 int listsiz

2020-11-02 21:15:48 537

原创 2020-10-24

定义二维数组用来记录四组男生的身高然后输出最高的和次高的男生身高在这里插入代码片#include<stdio.h>#include<iostream>#include<stdlib.h>using namespace std;int main(){int p1;//用来表示最高的int p2;//用来表示次高的int boys[4][3]={{173, 175, 177}, {168, 170, 178}, {180, 166, 178}, {169

2020-10-24 16:35:47 57

原创 2020-10-20

/**让用户输入一个字符串,然后反向输出,注意:不能改变原来的字符串!如: “12345” 逆转成 “54321” 输出*/#include<stdio.h>#include<iostream>#include<string>using namespace std;int main(){ string input; int l;//字符串长度 int temp;//交换值 cout<<"请输入一段字符:"; cin>>

2020-10-21 16:58:18 80

原创 2020-09-19

从新开始 给我来10000行代码 啊啊啊啊啊

2020-09-19 20:23:44 55

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除