
C/C++
文章平均质量分 65
wolenski
这个作者很懒,什么都没留下…
展开
-
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而转载 2012-08-17 19:44:31 · 924 阅读 · 0 评论 -
BSS段/DATA段/CODE段
转自http://blog.youkuaiyun.com/ljzcom/article/details/7254872BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。 BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segm转载 2012-08-31 16:58:58 · 2153 阅读 · 0 评论 -
把字符串转换成整数
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题。建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同。首转载 2012-08-23 20:08:55 · 538 阅读 · 0 评论 -
int long 字节数
上次腾讯面试,问我int和long分别几个字节,结果被鄙视了。事过N天,鼓起勇气来好好查了一下,发现学问还是蛮大的。int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧,或者自己typedef int INT32一下。C、C++标准中只规定了某种类型的最小字节数(防止溢出)64位指的是cpu通用寄存器的数据转载 2012-09-04 14:12:00 · 884 阅读 · 0 评论 -
C++题目汇总
问题(1):运行如下的C++代码,输出是什么?class A { public: virtual void Fun(int number = 10) { std::cout << "A::Fun with number " << number; } }; class B: public A { public: virtua转载 2012-08-23 10:34:35 · 620 阅读 · 0 评论 -
堆和栈的区别(内存和数据结构)
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教转载 2012-09-06 17:53:42 · 31181 阅读 · 7 评论 -
STL中vector、list、deque的区别
1 vector向量 相当于一个数组在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。优点:转载 2012-08-31 19:34:28 · 709 阅读 · 0 评论 -
运算符的执行顺序
运行下图中的C++代码,打印出的结果是什么?bool Fun1(char* str) { printf("%s\n", str); return false; } bool Fun2(char* str) { printf("%s\n", str); return true; } int _tmain(int argc, _转载 2012-08-22 23:09:03 · 1418 阅读 · 0 评论 -
C++ Static用法
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一 个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到转载 2012-09-05 16:26:15 · 583 阅读 · 0 评论 -
STL 迭代器
中定义了迭代器得使用方法,主要得模版类有:插入迭代器插入迭代器是一种迭代器适配器,带有一个容器参数,并生成一个迭代器,用于在指定的容器中插入元素。通过插入迭代器赋值时,迭代器将会插入一个新的元素。C++语言提供了三种插入器,其差别在于插入元素的位置不同:back_inserter,创建使用push_back实现插入的迭代器,其使用一个对象作为实参将一个新元素插入到容器得后端fron转载 2012-09-04 14:46:34 · 592 阅读 · 0 评论 -
scanf和printf
大一下学期遇到的问题,现在想起来把他搞明白………………--------------------------------------------------------------------------------------------------------------------------------这个是中定义的scanf:_CRTIMP int __cdecl __MING转载 2012-08-23 20:20:10 · 4797 阅读 · 0 评论 -
内存管理-内存池技术
转自http://www.cnblogs.com/dwdxdy/archive/2012/06/05/2537431.html内存池是种用于分配大量大小相同的小块内存的技术,可以极大加快内存分配/释放过程.MemPool技术的内存分配,释放速度非常快,达到O(1)级别.缺点:1).只能分配特定字节长度的内存,也就是说,MemPool不是通用内存管理器.2).MemPoo转载 2012-08-31 20:02:37 · 817 阅读 · 0 评论 -
atoi函数的实现
转自http://blog.youkuaiyun.com/udknight/article/details/1836799int isspace(int x){ if(x==' '||x=='\t'||x=='\n'||x=='\f'||x=='\b'||x=='\r') return 1; else return 0;}int isdigit(int x){ if转载 2012-08-28 22:41:51 · 396 阅读 · 0 评论 -
itoa函数
char* itoa(int val,char* buf,unsigned int radix) //考虑进制,需要参数radix指定{ char *bufptr; //要另外定义一个指针进行操作,因为最后需要返回字符串起始地址 char *firstdig; char temp; unsigned int digval; //assert(buf != NULL); bu转载 2012-08-29 10:04:24 · 504 阅读 · 0 评论 -
strcmp函数
int strcmp(const char *src, const char *dst){ int ret = 0; if (src == dst) { return 0; } assert(src!=NULL); if (dst == NULL) { return -1; } while(!(ret=*(unsigned char*)src-*(unsigned转载 2012-08-29 10:33:58 · 385 阅读 · 0 评论 -
C&C++中联合体(union)的使用
试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式?分析:作为一个计算机相关专业的人,我们应该在计算机组成中都学习过什么叫Little endian和Big endian。Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big endian认为第一个字节是最高位字节(按照从低地址到高地址转载 2012-08-29 22:11:23 · 2751 阅读 · 0 评论 -
new,delete和malloc,free的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.转载 2012-08-16 19:56:27 · 781 阅读 · 0 评论 -
NULL指针、零指针、野指针
1. 空指针、NULL指针、零指针1.1什么是空指针常量0、0L、'\0'、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量(注意 (char*) 0 不叫空指针常量,只是一个空指针值)。至于系统选取哪种形式作为空指针常量使用,则是实现相关的。一转载 2012-08-16 20:00:29 · 801 阅读 · 0 评论 -
限制条件下的算术运算
题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。看到的这个题目,我的第一反应是傻眼了,四则运算都不能用,那还能用什么啊?可是问题总是要解决的,只能打开思路去思考各种可能性。首先我们可以分析人们是如何做十进制的加法的,比如是如何得出转载 2012-08-21 21:18:54 · 660 阅读 · 0 评论 -
C++ 虚函数,虚函数表
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型转载 2012-08-31 15:33:41 · 629 阅读 · 0 评论 -
c中malloc realloc calloc 的区别和联系
ANSI C说明了三个用于存储空间动态分配的函数(1) malloc 分配指定字节数的存储区。此存储区中的初始值不确定(2) calloc 为指定长度的对象,分配能容纳其指定个数的存储空间。该空间中的每一位(bit)都初始化为0(3) realloc 更改以前分配区的长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个足够大的区域,而新增区域内的初始值则不确定.转载 2012-08-31 16:04:12 · 879 阅读 · 0 评论 -
堆和栈的区别
转自http://blog.youkuaiyun.com/hairetz/article/details/4141043一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 :1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放转载 2012-08-31 16:54:51 · 651 阅读 · 0 评论 -
typedef和define具体的详细区别
转自http://blog.youkuaiyun.com/21aspnet/article/details/67239151) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r转载 2012-08-31 19:20:25 · 688 阅读 · 0 评论 -
人证比对TCPSERVER
一个简单的人脸比对服务,使用socket通信建立tcp监听,比对2张照片。使用了第三方sdk包。#include "stdafx.h"#include #include "FaceSDKImpl.h"#include "FaceSimilarityTool.h"#include #include #include //windows.h includes winsock2原创 2015-08-06 13:17:32 · 2770 阅读 · 0 评论