![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 79
繁城落叶
这个作者很懒,什么都没留下…
展开
-
C++学习笔记:转换构造函数与类型转换函数
C++类中包含集中构造函数。1.默认构造函数。Complex(); (以复数为例。)2.用于初始化的构造函数。Complex(int i,int j);3.用于复制对象的复制构造函数。Complex(Complex &c)4.转换构造函数。Complex(double r){real=r,imag=0;}转换构造函数就是把传入的其他类型参数转换成原创 2016-05-26 12:06:01 · 6858 阅读 · 0 评论 -
使用信号量机制解决家庭吃水果问题。
桌上有一个可以容纳3个水果的盘子,每次只能放或取一个水果,爸爸负责削苹果,妈妈负责剥桔子,儿子只吃苹果,女儿只吃橘子。使用信号量机制来解决。设置一个empty变量表示盘中还有几个空位置,然后设置apple和orange记录盘中苹果和橘子的数量。运行结果:源代码:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <p原创 2018-03-28 13:56:25 · 7280 阅读 · 6 评论 -
有名管道实现进程间通信。
有名管道介绍。使用pipe创建的无名管道只能用于具有亲缘关系的进程之间,这就大大限制了管道的使用。有名管道的出现就是为了解决这个限制问题,有名管道可以使互不相关的两个进程实现彼此通信。通信的过程就是通过路径名来指出管道文件,然后在建立了管道联系之后两个进程就可以把它当做一个普通文件一样进行读写操作,但是有名管道是严格遵循FIFO的规则,也就是所谓的先进先出,如果从有名管道中读取数据的话总是从开始出返原创 2017-12-25 16:07:09 · 3042 阅读 · 0 评论 -
C语言中socket使用讲解。
1.socket定义。在Linux中的网络编程是通过socket接口来进行的。其实socket接口也是一种特殊的I/O(在《深入理解计算机系统》这本书中的IO部分也有提到网络也是一种特殊的IO),它也是一种文件描述符。socket也有一个类似于打开文件的函数调用,该函数返回一个整型的socket描述符,随后的建立连接、数据传输等操作都是通过socket来实现的。2.socket的类型。1 .流式so原创 2017-11-06 20:52:51 · 24626 阅读 · 5 评论 -
使用信号量控制线程互斥和同步。
首先要知道PV原语的概念。以下是百度百科对PV原语的介绍: PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。 信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新的变量类型(semaphore)来记录当前可用资源的数量。有两种实现方式:1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,原创 2017-10-18 21:22:36 · 3346 阅读 · 0 评论 -
C语言测试大小端模式
大小端是什么?这个问题在这里不做过多解释,可以参考:大小端模式详解。 但还是给出一些基本概念: 大小端问题产生的原因:由于在各种体系结构的处理器中,对多个字节数据的内存操作有着不同的定义,所以当处理器在读写一个多个字节内存时,可能涉及到大小端问题。如果处理器读写指令针的数据长度不一致的时候,就会产生大小端的问题。在小端模式中,数据的低字节将会存放在内存的低地址处,数据的高字节会存放在内存的高地址原创 2017-04-27 21:45:09 · 4343 阅读 · 0 评论 -
C语言的宏总结
1. 简单宏定义简单的宏定义有如下格式:[#define指令(简单的宏)] #define 标识符替换列表替换列表是一系列的C语言记号,包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号。当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它。不要在宏定义中放置任何额外的符号,否则它们会被转载 2017-04-25 18:08:53 · 1639 阅读 · 1 评论 -
子进程中getppid()返回值与父进程的不一致
老师要求使用fork创建一个子进程,并且在子进程中显示父进程的进程号和子进程的进程号,然后显示出当前目录下的内容,在父进程中显示出父进程的进程号和子进程的进程号。代码很简单,直接调用fork函数,然后根据其返回值判断在子进程还是父进程中即可。关于fork的知识点,可以参考linux中fork()函数详解(原创!!实例讲解)很快写出了程序,但是执行之后却发现了一个问题:程序代码:运行之后:按道理说应该原创 2017-04-20 17:19:37 · 5852 阅读 · 5 评论 -
大端模式和小端模式
在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:Big-Endian和Little-Endian,下面先从字节序说起。一、什么是转载 2017-04-07 20:44:40 · 693 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似转载 2017-02-27 14:02:32 · 560 阅读 · 0 评论 -
linux ar命令
当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍命令ar,用来对库操作。 1.ar基本用法 ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留转载 2017-02-26 20:19:45 · 705 阅读 · 0 评论 -
linux 链接库文件出现“undefined reference to" 问题的解决方法
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o) 测试代码转载 2017-02-26 11:32:50 · 6064 阅读 · 1 评论 -
c语言:静态库与动态库
在Linux中创建静态库和动态库范例 (hello.c)0人收藏此文章,我要收藏 发表于2年前 , 已有440次阅读 共0个评论我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要转载 2016-11-29 21:32:05 · 2929 阅读 · 0 评论 -
C++:文件加密(凯撒加密、栅栏加密、异或加密四方加密、Base64加密)
可选加密解密:凯撒加密、栅栏加密、异或加密、四方加密。凯撒加密:秘钥自动根据随机数生成,并且每次加密时随机生成1和2,若是1则向后移位实现加密,若是2则向前移位实现加密,将秘钥和1或2存入文件密文中,解密时根据其进行解密,凯撒加密可对字母,数字,中文等进行加密。栅栏加密:栅栏加密一般不超过30个字符,根据字符长短分为2栏和7栏加密方式,若是偶数则全部进行加密,若是奇数则最后一个字符不进行加原创 2016-06-12 21:45:21 · 4264 阅读 · 0 评论 -
C++:贪吃蛇
1100多行实现贪吃蛇,带颜色,有速度选择,有难度选择,有分数保存和读取等。#include #include #include #include #include #include #include #include using namespace std;void hide_cursor(){ CONSOLE_CURSOR_INFO cci = {1, 0}; S原创 2016-05-25 11:30:06 · 1160 阅读 · 0 评论 -
CURL 报错:curl_easy_perform() failed:URL using bad/illegal format or missing URL
在使用C++中的curl进行网络调用的时候,出现了这个错误:curl_easy_perform() failed:URL using bad/illegal format or missing URL错误信息很明显,就是URL不太对,此时我是这样调用的:先使用了 std::string 保存对应的url,然后传入到curl的设置里面,看起来没有什么问题,该URL也是绝对能用的,但是运行...原创 2019-06-11 09:54:31 · 16445 阅读 · 0 评论