![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
薛定猫的蛾
这个作者很懒,什么都没留下…
展开
-
简单汇编指令
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 · 279 阅读 · 0 评论 -
强弱符号
#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 · 757 阅读 · 0 评论 -
预编译-编译-汇编-链接
预编译1.删除#define并做文本替换2.处理#if,#denif等预编译指令3.处理#include递归展开的过程4.删除注释5.添加行号和文件标识6.保留#program指令编译1.词法分析2.语法分析3.语义分析4.代码优化5.生成指令汇编翻译指令链接#include...原创 2020-03-03 15:37:14 · 217 阅读 · 0 评论 -
信号量
临界资源:同一时刻只允许一个进程访问的资源临界区:访问临界资源的代码段当我们编写的程序使用了线程时,不管是运行在多用户系统上、多进程系统上,还是运行在多用户多进程系统上。我们通常会发现,程序中存在着一部分临界代码,我们需要确保只有一个进程(或只有一个执行进程)可以进去这个临界代码并拥有对资源独占式的访问权。信号量:是一个特殊的变量,只允许对它等待(wait)和发送信号(signal)这两种操...原创 2019-11-26 14:32:31 · 119 阅读 · 0 评论 -
管道
进程间通信:管道,信号量,共享内存,消息队列,套接字。管道是进程间通信的重要途经,其过程是:在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。由于这种方式具有单向传递数据的特点,所以这个作为传递消息的共享文件就叫做“管道”。管道分为有名管道mkfifo()和无名管道mkpipe()。1.无名和有名管道的区别?有名管道可以在任意两个进程间通信,无名只能在父子间2.写入管道...原创 2019-11-26 10:26:47 · 200 阅读 · 0 评论 -
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 · 497 阅读 · 0 评论 -
字符串数组->数字 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 · 243 阅读 · 0 评论 -
数字->字符串数组 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 · 147 阅读 · 0 评论 -
递归函数入栈及出栈图解
入栈:出栈:原创 2019-10-23 10:15:24 · 1384 阅读 · 0 评论 -
空指针崩溃
#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 · 218 阅读 · 0 评论 -
请输入一个整数,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 · 577 阅读 · 0 评论