指针相减 如果两个指针指向同一个数组,它们就可以相减,其结果为两个指针之间的元素数目。#include <iostream>using namespace std;int main(){ int a[3] = {0, 1, 2}; int *p, *q; p = a; cout << p << endl; cout ...
电源地、信号地、大地 电源地主要是针对电源回路电流所走的路径而言的,一般来说电源地流过的电流较大,而信号地主要是针对两块芯片或者模块之间的通信信号的回流所流过的路径,一般来说信号地流过的电流很小,其实两者都是GND,之所以分开来说,是想让大家明白在布PCB 板时要清楚地了解电源及信号回流各自所流过的路径,然后在布板时考虑如何避免电源及信号共用回流路径,如果共用的话,有可能会导致电源地上大的电流会在信号地上产生一个电压差...
selectIO多路转接使用实例 客户端程序为上一篇博客里的tcp_client.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/select.h>#incl...
并发通信 采用TCP协议的CS架构: 服务器使用了多进程,创建了三个进程:父进程用来检测客户端连接情况,子进程用来接收客户端消息,孙进程用来向连接上来的客户端发送“hello”。 为优化代码结构,服务器中的接收消息和发送消息都是使用了execl函数封装。 客户端使用了多线程,主线程用来向服务器发送消息,次线程用来接收服务器的问候。遇到的问题:客户端强制退出时,...
函数对象和谓词 函数对象:重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。这是通过重载类的operator()来实现的。“在标准库中,函数对象被广泛地使用以获得弹性”,标准库中的很多算法都可以使用函数对象或者函数来...
exec函数族简单用法 exec函数族中真正意义上的系统调用只有execve(), exec函数族的作用是根据指定的文件名,找到可执行文件,并用它来取代调用进程的内容。在调用进程内部执行一个可执行文件。#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ ...
大数加减法 #include <stdio.h>#include <string.h>void LargeNumAdd(char *str1, char *str2){ int num1[100] = {0}; int num2[100] = {0}; int out[100] = {0}; int len = 0, len1 = 0, len...
字符串语句逆序(普通方法和主函数参数列表法) 题目: 通过编程实现语句逆序,如:I am from shanghai,逆序为shanghai from I。方法一:常用方法1)先将单词逆序,得到“I ma morf iahgnahs”2)再将整个句子逆序得到“shanghai from I”。#include <stdio.h>void RevWord(char *p, char *q){ char...
约瑟夫环——数组实现 #include <stdio.h>int main(){ int Size = 0; printf("please input num: "); scanf("%d", &Size); int yoseph[Size]; int flag = Size; //用来判断是否只剩下最后一人 int i = 0, k = 0...
约瑟夫环——链表实现 #include <stdio.h>#include <stdlib.h>typedef struct node{ int num; struct node * next;}Node, *Link;int is_malloc_ok(Link new_node){ if (new_node) return 0; ...
C++类模板带表头单链表的实现 #include <iostream>using namespace std;/****** 创建结点结构 ********/template <class T>class Node{public: Node *next; T data;};/****** 创建链表类模板 ********/template <class T&...
Linux下创建进程的三种方法及特点 在Linux中主要提供了fork、vfork、clone三个进程创建方法。在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时,通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。fork fork创建一个进程时,子进程只是完全复制父进程...
宏函数与自定义函数区别 1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行...
交换机和路由器的实现原理 1.二层交换技术 二层交换机是数据链路层的设备,它能够读取数据包中的MAC地址信息并根据MAC地址来进行交换。 交换机内部有一个地址表,这个地址表标明了MAC地址和交换机端口的对应关系。当交换机从某个端口收到一个数据包,它首先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的,它再去读取包头中的目的MAC地址,并在地址表中查找相应的端口,如果表中有与这目的MAC...
进程与线程区别 1.什么是进程?什么是线程? 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结...
系统调用和库函数 一、系统调用系统调用,我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了对系统硬件设备功能的操作。这么说可能会比较抽象,举个例子,我们最熟悉的 hello world 程序会在屏幕上打印出信息。程序中调用了 printf() 函数,而库函数 printf 本质上是调用了系统调用 write() 函数,实现了终端信息的打印功能。___________________...
数据库与文件系统存储数据的区别 一、文件系统与数据库系统的概念及其发展1.文件系统 所谓的文件系统简单地说负责存取和管理文件信息的软件结构。例如电脑的硬盘C、D、E、F盘和可以动的存储设备等。文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 文件系统由三...
(带表头)双向链表的创建、插入、清空、删除 #include <stdio.h>#include <stdlib.h>struct double_node{ int num; struct double_node * next; struct double_node * prior;};typedef struct double_node Dnode;typedef stru...
单链表的创建、插入、删除和释放 #include <stdio.h>#include <stdlib.h>/***************************************************** Function: struct node Description: 存放结构体的值域和址域 Calls: 无 Calls by: 无 Input: 无 Output: 无...
函数指针简例 函数指针:定义:函数指针是函数的物理入口地址。即是在编译时,分配的物理入口地址。引用:不带括号和参数的函数名代表函数的入口地址。形式:指向函数的指针变量定义形式-->类型 (*指针变量名) ( ); 通过指向函数的指针调用函数的形式-->(*指针变量名) (实参表列)。#include <stdio.h>//因为要给函数指...