- 博客(19)
- 收藏
- 关注
原创 类和对象
class People { public: void eat(char* _what) { std::cout<<name<<"is eatting"<<_what<<std::endl; } void sleep(char* _where) { std::cout<<name<<"is sleeping ...
2020-04-02 22:47:01
196
原创 new
动态开辟内存 C:malloc | free void* malloc(size_t size); size 开辟的内存大小 void* 无符号指针 [) 半开半闭 不安全 void free(void* ptr); int* p = (int*)malloc(sizeof(int)*x); free(p); C++: new | delete (关键字)...
2020-03-28 17:35:08
234
原创 引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。 #include<iostream> using namespace std; void Swap(int &a,int &b) { int tmp=a; a=b; b=tmp; } int main() { int a=10;...
2020-03-23 21:16:14
174
原创 const在C和C++中的区别
C: const 修饰的变量 (常变量) 常变量的处理机制 编译阶段 查询常变量有没有做左值,其他的处理与普通变量的处理方式相同 int main()//C { const int a = 10;//常变量 int* p=&a; *p = 20; printf("a:%d\n",a);//√ return 0; } C++: const 修饰的变量 (常量) 编译阶段 使用到...
2020-03-16 17:11:27
129
原创 inline内联函数
编译阶段 inline函数 函数的调用把inline函数代码直接展开 不生成函数符号 inline int Sum(int a , int b ) { return a+b; } int main() { Sum(10,20); return 0; } inline函数与普通函数处理有什么区别? 1.普通函数 函数堆栈和清栈 2.inline 直接代码展开,没有堆栈和清栈开销 效率提...
2020-03-16 16:51:58
129
原创 Linux复习
目录结构: /boot:存放内核和启动有关的文件 /bin:存放命令 /etc:存放配置文件 /dev:设备文件 /lib:存放库文件 /home:所有普通用户的家目录 /mnt:临时挂载点 /proc:虚拟目录 (存放进程中的某些信息) /root:管理员的家目录 文件类型...
2020-03-09 14:05:42
166
原创 函数重载
int Sum(int a,int b) { return a+b; } double Sum(double a,double b) { return a+b; } float Sum(float a,float b) { return a+b; } int main() { Sum(10,20); Sum(10.1f,20.2f); Sum(10.1,20.2); return 0...
2020-03-07 21:01:14
217
原创 函数的默认值
int Sum(int a,int b=10,int c=10) { return a+b+c; } int main() { Sum(10); } 默认值的赋予规则:自右向左 实参的匹配的规则:自左向右 当有默认值,有实参时,取实参 当有默认值,没实参时,取默认值 当没默认值,没实参时,取实参 当既没默认值,也没实参时,函数报错 ...
2020-03-07 20:00:41
372
原创 简单汇编指令
eax ebx ecx edx 存放变量的寄存器 ebp 栈底指针寄存器 esp 栈顶指针寄存器 汇编指令 mov 移植 mov eax,4; lea 移地址 lea dword ptr[eax],[a]; [a] 取a的地址 dword 4个字节 sub 累减 eax-=4; add 累加 eax+=4; push 压栈...
2020-03-06 21:36:37
305
原创 强弱符号
#include<stdio.h> short a = 10;//强符号 short b = 20; int main() { Func(); printf("a: %d\n",a); printf("b: %d\n",b); return 0 } int a;//弱符号 void Func() { a = 100; }//生成指令:mov dword ptr[a],...
2020-03-03 15:59:48
791
原创 预编译-编译-汇编-链接
预编译 1.删除#define并做文本替换 2.处理#if,#denif等预编译指令 3.处理#include递归展开的过程 4.删除注释 5.添加行号和文件标识 6.保留#program指令 编译 1.词法分析 2.语法分析 3.语义分析 4.代码优化 5.生成指令 汇编 翻译指令 链接 #include...
2020-03-03 15:37:14
241
原创 信号量
临界资源:同一时刻只允许一个进程访问的资源 临界区:访问临界资源的代码段 当我们编写的程序使用了线程时,不管是运行在多用户系统上、多进程系统上,还是运行在多用户多进程系统上。我们通常会发现,程序中存在着一部分临界代码,我们需要确保只有一个进程(或只有一个执行进程)可以进去这个临界代码并拥有对资源独占式的访问权。 信号量:是一个特殊的变量,只允许对它等待(wait)和发送信号(signal)这两种操...
2019-11-26 14:32:31
144
原创 管道
进程间通信:管道,信号量,共享内存,消息队列,套接字。 管道是进程间通信的重要途经,其过程是:在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。由于这种方式具有单向传递数据的特点,所以这个作为传递消息的共享文件就叫做“管道”。 管道分为有名管道mkfifo()和无名管道mkpipe()。 1.无名和有名管道的区别? 有名管道可以在任意两个进程间通信,无名只能在父子间 2.写入管道...
2019-11-26 10:26:47
233
原创 strlen的实现--计算一个字符串的长度
#include<stdio.h> #include<stdlib.h> int strlen(char *str) { int len=0; /* 依次访问字符串的内容,计算字符数,知道遇到NUL终止符。 */ whlie(*str++ != '\0') { len+=1; } return len; 指针到达字符串末尾的’\0’字节之前,while语句中的*st...
2019-11-02 10:27:05
545
原创 字符串数组->数字 atoi实现
int Myatoi(const char *str) { assert(str != NULL); if(str == NULL) return 0; int tmp = 0; int flg = 1;//符号 while(*str == ' ')//开头空格 str++; if(*str == '-') { flg = -1; str++; } if(*str...
2019-10-26 14:49:19
266
原创 数字->字符串数组 itoa 实现
void Reverse(char *str) { char *p = str; char tmp; //p找打字符串结尾 while(*p != '\0') p++; //p和str交换 for(p--;str<p;str++,p--) { tmp = *str; *str = *p; *p = tmp; } } //void Myitoa(char *...
2019-10-26 14:47:14
169
原创 空指针崩溃
#include <stdio.h> void Fun(int *p) { p = NULL; } int main() { int a = 10; int *p = &a; //p = NULL;//崩溃 Fun(p); printf("%d\n",*p);//思考,1.为什么不崩溃,2.想要崩溃怎么办? return 0; } 父函数调用子函数,子函数...
2019-10-23 09:58:55
246
原创 请输入一个整数,1.判断其位数、2.逆序输出其每位数字、3.顺序输入其每位数字。(C语言)
#include<stdio.h> #include<math.h> int GetFigures(int n) //判断位数 { if(n == 0) //如果为0,直接返回位数为1 return 1; int count = 0; //储存位数 while(n != 0) { count++; //每丢弃一次个位储存位数变量+1 ...
2019-09-12 11:36:03
615
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人