C/C++
zhangjikuan
这个作者很懒,什么都没留下…
展开
-
linux c/c++按规则获取网卡ip
linux c/c++按规则获取网卡ip 输出项目到云或者输出给外部客户,会遇到服务器多网卡多ip的情形,如果有多个应用都需要这个主机ip,而且多应用需要获取相同的ip,此时可以约定一种规则来获取相同的ip,比如: 获得所有网卡名,然后对网卡名按从小到大排序,查找最小的网卡名对应非local的ip,这样每个应用都使用这种规则,就会获取到相同的ip了,而且这种思路不受多种语言所限制。详原创 2018-02-01 12:31:45 · 3108 阅读 · 0 评论 -
Linux内核中是怎么实现min和max函数
Linux内核代码有很多很经典的代码,仔细去看看,可以学到很多知识。今天说说Linux是怎么实现min和max的。max和min函数都是比较常用的,可以用函数,或者利用宏去实现,一般我们会这样去写:1#define min(x,y) ((x)>(y)?(y):(x))2#define max(x,y)转载 2015-10-25 22:09:01 · 2659 阅读 · 0 评论 -
C++中关联容器map和set使用说明
C++中关联容器map和set使用说明一:mapC++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。 (所以map关键字独一无二,重复插入不做操作)一、map的说明 1 头文件 #include 2 定义 map my_Map; //第一个string是k原创 2015-10-25 17:14:00 · 2766 阅读 · 0 评论 -
程序员代码面试指南:IT名企算法与数据结构题目最优解-字符串问题:C/C++语言实现
程序员代码面试指南-字符串问题:C/C++语言实现/*//程序员代码面试指南-字符串问题//1.判断两个字符串是否互为变形词bool isDeformation(string str1,string str2){ if(str1.length() !=str1.length()) return false; const char *chas1=str1.c_str();原创 2015-10-24 10:43:28 · 3540 阅读 · 0 评论 -
深入了解scanf()/getchar()/gets()/cin/cin.get/cin.getline()/getline()
C/C++学习笔记 - 深入了解scanf()/getchar()和gets()等函数----------------------------------------------------| 问题描述一:(分析scanf()和getchar()读取字符) |----------------------------------------------------sc原创 2015-09-20 09:56:55 · 1076 阅读 · 0 评论 -
C++中的hash_map和map的区别
1)为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最转载 2015-09-21 19:16:14 · 526 阅读 · 0 评论 -
malloc内存分配详解
这里的存储分配程序,讲的就是标准库中malloc函数的实现原理。首先要了解针对malloc的内存存储结构。malloc不像全局变量一样,不是在编译器编译的时候就会分配内存空间,而是在调用到malloc函数时才会分配空间。有时还会中途调用free函数释放空间出来。所以: 1、malloc在第一次被调用时,从系统中获取最小为一个单元的空闲空间(eg:最小单元为1024个最受限单元转载 2015-09-21 16:57:57 · 5811 阅读 · 1 评论 -
32位与64位机器下各数据类型长度对比
64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂);可以访问大型数据库。本文介绍的是64位下C语言开发程序注意事项。1 32 位和 64 位C数据类型32和64位C语言内置数据类型,如下表所示。bit Linux下程序开发注意事项" title="64 bit Linux下程序开发注意事项" style="marg转载 2015-09-10 16:46:37 · 4315 阅读 · 2 评论 -
你知道数据库索引的工作原理吗?
问:随着数据库的增大,既然索引的作用那么重要,有谁能抛开具体的数据库来解释一下索引的工作原理?转载自:http://www.ituring.com.cn/article/986为什么需要索引数据在磁盘上是以块的形式存储的。为确保对磁盘操作的原子性,访问数据的时候会一并访问所有数据块。磁盘上的这些数据块与链表类似,即它们都包含一个数据段和一个指针,指针指向下一个节点(数据块)转载 2015-09-19 15:33:04 · 505 阅读 · 0 评论 -
常见排序算法时间复杂度和空间复杂度表
归并排序空间复杂度为O(n)快速排序空间复杂度为O(logn~n):因为快速排序是递归的,需要一个栈存放相应的数据,最大递归调用次数与递归树的深度有关堆排序空间复杂度在非递归情况下是O(1),递归情况下就是O(logn)转载 2015-09-19 15:09:36 · 936 阅读 · 0 评论 -
sizeof()计算数组结构体类大小长度
sizeof()是一个操作符,用来计算长度的,下面程序详细解释了数组,字符,结构体,类等的长度计算方法// sizeof.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdlib.h"#include "iostream.h"//数据对其原则/**原创 2015-06-27 14:13:07 · 11319 阅读 · 0 评论 -
九大排序算法-C语言实现及详解
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,原创 2015-10-13 11:08:16 · 65075 阅读 · 7 评论 -
C++:string转char*
C++中把string转换为char* 有3中方法:1.data如:string str="abc";char *p=str.data();%这行应更正为char*p=(char*)str.data();,引自贴内网友的回复2.c_str如:string str="gdfd"; char *p=str.c_str();3. copy比如string原创 2015-12-06 15:18:03 · 606 阅读 · 0 评论 -
浅谈Volatile与多线程
浅谈Volatile与多线程最近看的比较杂,摘了一些人的笔记!随着多核的日益普及,越来越多的程序将通过多线程并行化的方式来提升性能。然而,编写正确的多线程程序一直是一件非常困的事情,volatile关键字的使用就是其中一个典型的例子。C/C++中的volatile一般不能用于多线程同步在C/C++中,如果想把一个变量声明为volatile,就相当于告转载 2017-02-07 21:45:28 · 3918 阅读 · 0 评论 -
老问题:关于X++和++X及其X=X++
1. X++题目如下:static void Main(string[] args){ int x = 5; int y = 10; y += x++; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}答案是多少呢?x转载 2017-02-07 20:40:09 · 3287 阅读 · 0 评论 -
printf函数注意
printf函数中注意的是当有数值传递的时候原创 2014-06-19 09:57:36 · 1140 阅读 · 0 评论 -
C++-函数重载
函数重载;在C语言中是不允许函数崇明d原创 2014-08-08 13:21:10 · 612 阅读 · 0 评论 -
c/c++使用指针做函数返回值和指针作函数参数问题
一、使用指针做函数返回值: 1、当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72。此时需要我们注意的是该地址值所指向的空间是否存在(即已向操作系统声明注册,不会被释放,即可能被其他操作修改);2、使用栈内存返回指针是明显错误的,因为栈内存将在调用结束后自动释放,从而主函数使用该地址空间将很危险转载 2016-07-07 09:32:42 · 8555 阅读 · 1 评论 -
C/C++中函数参数传递详解
昨天看了内存管理的有关内容,有一点了解,但不是很深入,发现之前写代码时有很多细节问题没有注意到,只知道这样做可以实现功能,却不知道为什么可以这样,对于采用自己的方法造成的隐患也未知,更不晓得还有其他方法可以实现,我们知道C++强大的一个原因是因为对于一个问题的答案多种解答方法或思路,我想着也许就是它难学的原因。因为你只知道一种或极少数的实现方法,却不知道其他的实现方法,换句话说,就是对这个东西很掌转载 2016-07-07 09:30:46 · 528 阅读 · 0 评论 -
java重载/重写(覆盖)/重构比较及其与C++差异
最近在学习java,与c++还是有一定的不同,下面分别比对一下比较容易混淆的重载、重写、重构,及其与C++的差异。关于c++中重载、覆盖和隐藏参考:http://blog.csdn.net/zhangjikuan/article/details/38447265 http://bl原创 2016-07-09 17:49:20 · 1677 阅读 · 0 评论 -
java多态及其与c++的差异
java多态及其与c++的差异 参考:C++-虚函数,多态性,纯虚函数,抽象类java多态: java多态相比于c++要简单一些 作用范围:基类和派生类中 实现方式:重构,重构详解参考:http://blog.csdn.net/zhangjikuan/article/detai原创 2016-07-09 19:47:35 · 596 阅读 · 0 评论 -
java权限修饰符详解及其与C++差异
java权限修饰符详解及其与C++差异java权限修饰符与c++差距挺大,在这里做个详细对比一、javajava权限修饰符有四个:public、protected、默认什么也不加、private1.类的权限修饰符(两个) public:公共,哪里都可以使用 什么也不加:只能在本包中使用此类(使用此类的意思就是创建此类的对象)2.类内成员(方法,成员变原创 2016-07-10 23:12:16 · 1280 阅读 · 0 评论 -
C++:int转string
在C++中推荐使用流对象来实现类型转换,包含头文件 #include eg:#include #include #include using namespace std;string str;stringstream ss;int n;.....ss<<n;str此时str中就是n的值float转string也是类似这样string转其他类型参考:http://b原创 2015-12-06 15:16:03 · 511 阅读 · 0 评论 -
C-static,const,volatile,extern
动态函数与静态函数的区别1.原创 2014-07-01 21:51:42 · 582 阅读 · 0 评论 -
模块化编程中全局变量跨文件使用
想定义个全局变量,其他文件都可以使用,但是如果定义在.h文件中,就容易出现重复定义的问题,具体该怎么做呢,如下:eg:一个工程中有五个文件,main.c first.c first.h second.c second.h想在first.c 中定义个全局变量,其他文件都可使用做法一(在first.c中定义一下,在其他想调用的文件里extern一下,与抱不包含头文件无关):firs原创 2014-12-22 14:08:59 · 5480 阅读 · 1 评论 -
C++中虚函数工作原理和(虚)继承类的内存占用大小计算
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一转载 2015-07-14 14:13:49 · 722 阅读 · 0 评论 -
C/C++:enum-枚举量声明、定义和使用
C/C++enum-枚举量声明、定义和使用众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下enum的使用方法步骤1——枚举量的声明和定义1首先,请看下面的语句:enum enumType原创 2015-03-25 16:54:18 · 5522 阅读 · 0 评论 -
C/C++之回调函数
今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指转载 2015-01-22 12:54:36 · 609 阅读 · 0 评论 -
几种c/c++中字符串转整形的方法
1.自己写一个函数(c/c++)#include #include /* my string to integer function */int myfun(char *str){ int i = 0,n = 0,flag = 1; if(str[0] == '-') i = 1;flag = -1; for(; st转载 2014-10-16 08:54:34 · 1559 阅读 · 0 评论 -
C-break,continue
1.break 跳出循环或者switch原创 2014-08-07 20:11:41 · 509 阅读 · 0 评论 -
C-define宏和Typedef
define为宏定义,例如:#define dps struct * 编译预处理的时候会把遇到原创 2014-08-07 20:17:51 · 667 阅读 · 0 评论 -
C-指针1
C指针注意:1.int *a; int是修饰*a的,意思是地址原创 2014-06-19 09:30:53 · 520 阅读 · 0 评论 -
C-堆和栈的区别
堆和栈的区分:堆(Heap)栈(Stack)1、内存分配方面:堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的原创 2014-08-07 19:45:24 · 731 阅读 · 0 评论 -
C-全局变量,局部变量,静态全局变量,静态局部变量
动态变量和静态变量的区别:1、存储位置动态变量:存储在内存出栈数据区静态变量:存储在全局数据区(静态数据区)2、生命期动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效静态变量:程序结束时才释放3、作用域动态变量:同样的要根据你定义的位置才能确定,和第二点的一样静态变量:当前文件中有效原创 2014-07-01 21:47:23 · 883 阅读 · 0 评论 -
C-指针2-野指针
“野指针”不是NULL指针,是指向被释放的或者访问受限内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if无法判断一个指针是正常指针还是“野指针”。有个良好的编程习惯是避免“野指针”的唯一方法。原创 2014-08-07 20:26:52 · 827 阅读 · 0 评论 -
C编译器编译过的函数怎样在C++中使用
15.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A转载 2014-06-22 13:20:13 · 714 阅读 · 0 评论 -
struct和typedef struct使用
struct和typedef struct分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student s转载 2015-03-18 10:44:44 · 548 阅读 · 0 评论 -
C++-this指针
this指针:是一个隐含的指针原创 2014-08-08 13:31:21 · 572 阅读 · 0 评论 -
c++-static关键字
(类中的static关键字) 1、静态数据成员 在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。先举一个静态数据成员的例子。 //Example 5 #include class Myclass { public: Myclass(int a,int b原创 2014-08-07 20:50:21 · 536 阅读 · 0 评论 -
C++-构造函数,析构函数
一:构造函数:原创 2014-08-08 11:16:51 · 615 阅读 · 0 评论