c
文章平均质量分 92
清风lsq
所发博客,都是个人学习记录,为了后续自己的回忆温习,有错请理解,要甄别。
展开
-
一文学会shell 脚本编写
shell 脚本的基础学习,一文彻底搞懂shell。原创 2022-11-09 11:53:21 · 1082 阅读 · 0 评论 -
c++与c 的知识点
c 与c++ 的知识加强点原创 2022-10-31 20:07:23 · 612 阅读 · 1 评论 -
c++指针初识
在C++编程中使用指针能有速度快,节约内存等优点,是很多C++程序员的最爱。但指针是一把双刃剑,用好了它,你就会发现指针有多么的方便,反之,你可能就头疼了,往往会出现意想不到的问题。 一.什么是指针: 其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针只是一个指示器,它告诉程序在内存的哪块区域可以找到数据。 这是一个非常重要的概念,有很多原创 2016-05-25 11:27:20 · 351 阅读 · 0 评论 -
c++引用的总结
c++引用的总结(转自点击打开链接)另外附上一篇有意思的文章,观点和本文有些出入,值得一看点击打开链接对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。引用是C++引入的新语言特性,是C++常用的一个重转载 2016-05-24 20:08:52 · 446 阅读 · 0 评论 -
再探指针
原文地址:点击打开链接指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; in转载 2016-05-26 16:28:35 · 353 阅读 · 0 评论 -
srand((unsigned)time(NULL))详解
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned seed);用法:它初始化随机种子,会提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数,如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:原创 2016-05-26 20:34:11 · 126556 阅读 · 29 评论 -
c中的\n和单双引号
1、scanf中通常是不需要加\n的,不加的时候,从键盘输入回车,表示输入结束了;如果加了\n,键盘输入的回车就被当成输入的字符了,需要再次输入非空白的字符才能结束输入,而且容易导致混乱,所以不建议在scanf中加\n2、printf中的\n就很好理解了,就是表示输出一个换行。3、双引号里面的是字符串 而单引号里面的代表字符,你可以这样理解 只要是在双引号里面的不代表任何表达式的意义,看下原创 2016-05-26 22:18:34 · 1940 阅读 · 0 评论 -
c++统计程序运行时间的方法
总结下c++中统计程序运行时间的方法。1:void main(){time_t t1;time(&t1);for(int i=0;i<1000000000;i++){int a=i;}time_t t2;time(&t2);printf("已运行%d秒\n",t2-t1);2:VC的话有profile,在链接属性页勾选profile项,然后profile(在编译菜原创 2016-05-27 18:03:05 · 10612 阅读 · 0 评论 -
c++智能指针的简介
C++智能指针是行为类似于指针的类对象。它使用设计模式中的代理模式,代理了原始“裸”指针的行为,为指针添加了更多更有用的特性。 C++引入异常机制后,智能指针由一种技巧升级为一种非常重要的技术,因为如果没有智能指针,程序员必须保证new对象能在正确的时机delete,四处编写异常捕获代码释放资源,而智能指针则可以在退出作用域时——不管是正常离开或是因异常离开——总调用delet原创 2016-05-25 17:33:51 · 424 阅读 · 0 评论 -
指针与引用一些区别
一篇非常不错的文章,转自点击打开链接。加了自己的一点修改和理解写在前面指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。转载 2016-05-25 11:53:58 · 346 阅读 · 0 评论 -
c++中:和::的用法
觉得这篇文章总结的十分好,转载于:http://fengqing888.blog.163.com/blog/static/3301141620100623933512/1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{unsigned char a:4;unsigned char c;}转载 2016-05-22 22:19:28 · 1814 阅读 · 0 评论 -
assert的用法简介
C++ assert()函数原型及介绍如下:C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。其语法很简单:static_assert(常量表达式,提示字符串)。如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该st原创 2016-05-22 10:55:04 · 414 阅读 · 0 评论 -
C/C++ 代码换行问题
C/C++ 代码换行问题在Windows中 回车换行(\n\r):每次光标移到下一行的行首位置处; '\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖; '\n' 换行,换到当前位置的下一行,而不会回到行首;Unix系统里,每行结尾只有“”,即"\n";Windows系统里面,每行结尾是“”,原创 2016-05-21 10:49:58 · 16545 阅读 · 0 评论 -
#define用法
转自:http://www.dingge.com/main/article.asp?id=10今天整理了一些#define的用法,与大家共享!1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000转载 2016-05-14 20:39:17 · 456 阅读 · 0 评论 -
C++中的宏替换
1.引子#define cat(x, y) x ## y那么cat(a, b)和cat(cat(a, b), c)的结果是啥.#define str_impl(x) #x#define str(x) str_impl(x)的意图何在.2.规则宏替换是C/C++的预处理中的一部分,在C++标准中有4条规则来定义替换.规则1:实参替换.本条规则描述带参数转载 2016-05-14 18:34:34 · 2328 阅读 · 0 评论 -
#和##在宏替换中的作用
摘自:http://blog.csdn.net/kingkai620/article/details/5905606文/kingkaihttp://blog.csdn.net/haoel/archive/2009/05/18/4197010.aspx,其中的PUZZLE 4给出了一个关于宏的谜题。值得研究。[c-sharp] view plaincopy#inclu转载 2016-05-14 18:27:12 · 412 阅读 · 0 评论 -
typedef的用法总结
于typedef的用法总结 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,用途一:定义一种类型的别名,转载 2016-05-14 11:06:02 · 267 阅读 · 0 评论 -
数组无序查找
在一组无序数列中,查找特定某个数值,并返回其位置pos。//在一组无序的数组中查找给定的数字,并返回下标,2016.5.26#include #include #include #define MAX 100void input(int num[])//实参传入的数组的首地址,而不是整个数组{ int i; srand((unsigned)time(NULL));//产生随机原创 2016-05-28 15:59:47 · 2139 阅读 · 0 评论 -
c++链式队列的实现
利用C++ 单向链表实现数据结构队列,仅仅是插入的时候在链表的尾部插入,取元素都是一样的,都从头部取。//2016.5.24 c++实现链式队列。#include using namespace std;template class qnode //链式节点类{ public: T data; qnode *next; };//struct qNode//{//原创 2016-05-25 18:17:41 · 1728 阅读 · 1 评论 -
c++实现二分法查找
二分查找也属于顺序表查找范围,二分查找也称为折半查找。二分查找(有序)的时间复杂度为O(LogN)。那么什么是二分查找呢?二分查找的基本思想是, 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到找到为止。从二分原创 2016-05-28 16:02:53 · 14434 阅读 · 4 评论 -
c实现哈希查找
哈希查找,也称为散列查找(本文以哈希称呼)。哈希它是由一组key/value的键值对组成的集合,它就是应用了散列技术。那么,什么是哈希查找呢?在弄清楚什么是哈希查找之前,我们要弄清楚哈希技术,哈希技术是在记录的存储位置和记录的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值的映射f(key),若查找集合中存在这个原创 2016-05-28 16:09:20 · 3762 阅读 · 2 评论 -
c++实现冒泡排序
冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。对冒泡排序算法进行简单的优化,用一个标记来记录在一趟的比较过程中是否存在交换,如果不存在交换则整个数组原创 2016-05-31 17:10:47 · 47312 阅读 · 8 评论 -
c++实现选择排序
选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。平均时间复杂度:O(n2)空间复杂度:O(1) (用于交换和记录索引)稳定性:不稳定 (比如序列【5, 5原创 2016-05-31 17:17:18 · 634 阅读 · 0 评论 -
c++实现插入排序
插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。下面介绍前两种:(一)直接插入排序原创 2016-05-31 17:26:39 · 1693 阅读 · 0 评论 -
c++实现希尔排序
希尔排序(Shell Sort),也称为递减增量排序算法,是插入排序的一种高速而稳定的改进版本。希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;2.但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位。希尔排序的一般步骤为:1.先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成原创 2016-05-31 17:29:36 · 8018 阅读 · 4 评论 -
c++实现归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的基本思想:将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有原创 2016-05-31 17:35:08 · 455 阅读 · 0 评论 -
c++实现快速排序
1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod) ,分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。2、快排步骤:①分解: 在R[low..high]中任原创 2016-05-31 17:54:15 · 470 阅读 · 0 评论 -
c++实现堆排序
在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具有更好的原创 2016-05-31 21:31:54 · 9497 阅读 · 0 评论 -
电脑提示MFC42.dll丢失怎么解决
mfc42d.dllDLL文件安装介绍一、如果您的系统提示"找不到mfc42d.dll"或"mfc42d.dll缺失" 或者"mfc42d.dll错误"等等,请不用担心,请把mfc42d.dll下载到本机。二、直接拷贝该文件到系统目录里: 1、Windows 95/98/Me系统,将mfc42d.dll复制到C:WindowsSystem目录下。 2、W转载 2016-06-04 17:34:05 · 16446 阅读 · 2 评论 -
初探tcp和udp
TCP HTTP UDP,都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。TCP HTTP UDP三者的关系:TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。原创 2016-06-04 19:37:57 · 448 阅读 · 0 评论 -
gdb命令的常用总结
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net.sixxs.org/wei801004/archive/2009/06/09/4253911.aspxGDB 命令详细解释 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。和所有常用转载 2016-06-12 21:55:10 · 515 阅读 · 0 评论 -
gdb详细介绍
本文转载自 http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2288004.html#_Toc3116580911 简介2 生成调试信息3 启动GDB 的方法4 程序运行上下文 4.1 程序运行参数 4.2 工作目录 4.3 程序的输入输出5 设置断点转载 2016-06-12 21:59:32 · 605 阅读 · 0 评论 -
Linux虚拟机的三种网络连接方式
博文原创http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646007.html)虚拟机网络模式无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式:1.桥接2.NAT3.Host-Only桥接 桥接网络是指本地物理网卡和转载 2016-07-12 20:12:45 · 12590 阅读 · 0 评论 -
Ubuntu下安装软件的几种方式
ubuntu下安装程序的三种方法引言在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种。下面针对每一种方法各举例来说明。apt-get方法使用apt-get install来安装应用程序算是最常见的一种安装方法了,比如我要安装build-essential这个软件,使转载 2016-07-12 20:20:59 · 16149 阅读 · 0 评论 -
Linux切换到root用户失败原因
Linux(fedora\centos\ubuntu等)终端窗口运行 su 输入密码,提示鉴定失败。原因:1 .安装linux时,未输入ROOT密码;或新建用户,勾选“设为管理员”,仅为新用户设置密码。未设置ROOT密码,系统检测失败解决办法:运行 sudo passwd root(重新设置root密码)退原创 2016-07-13 18:40:25 · 13989 阅读 · 0 评论 -
linux下安装中文输入法及vim支持中文的方法
最近折腾Ubuntu,之前一直是用英文显示系统,输入法也是Ubuntu14默认的拼音,一开始也没觉得不好,可是在vim编辑文档时 ,需要添加注释,这就显得十分不方便,所以花点时间来解决这个问题,一开始是想找vim如何支持中文的方法,网络上的各种插件方法都看了,可惜的安装又慢,最重要的是我的电脑安装出错,十分背。又想到换个中文输入法或许可以解决。于是整理网上的方法,共享一下。原创 2016-07-13 21:46:04 · 35399 阅读 · 4 评论 -
Linux编写程序入门
学习Linux编程,第一件事就是写个小程序,编译运行体会Linux编程的大致流程,这里以经典的hello word 作为入门例子。第一步:打开终端,随便进入一个文件夹用于存放你编写的程序 #cd /home/usr/workspace #vim Hello.c 接着你就会看到vim编辑器,按i开始输入,接着输入你的代码,输完后按Esc,再输入":wq"(引号内)保存退出。现在原创 2016-07-14 11:16:03 · 802 阅读 · 0 评论 -
Linux网络编程常用头文件解释
sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函数其转载 2016-07-14 20:44:55 · 5793 阅读 · 0 评论 -
Linux网络编程入门-1
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候转载 2016-07-14 21:22:04 · 482 阅读 · 0 评论 -
Linux网络编程入门-2
Linux网络编程--3. 服务器和客户机的信息函数这一章我们来学习转换和网络方面的信息函数. 3.1 字节转换函数 在网络上面有着许多类型的机器,这些机器在表示数据的字节顺序是不同的, 比如i386芯片是低字节在内存地址的低端,高字节在高端,而alpha芯片却相反. 为了统一起来,在Linux下面,有专门的字节转换函数. unsigned long int hton转载 2016-07-14 21:41:49 · 601 阅读 · 0 评论