C/C++
非小号
这个作者很懒,什么都没留下…
展开
-
platform机制
【IT168 技术】 最近在看SPI、I2C这样简单点的总线驱动程序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver.现在Linux中大部分的设备驱动都可以使用这套机制,总线为 platform_bus,设备用platform_device表示,驱动用platform_driver进行注册。 Linux的这种pla转载 2012-08-16 21:52:03 · 488 阅读 · 0 评论 -
嵌入式笔试1
1.main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1);//ptr实际是a[5] printf("%d,%d",*(a+1),*(ptr-1));}答:2,5*(a+1)就是a[1],*(ptr-1)就是a[4], 执行结果是2, 5。&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个原创 2012-08-31 12:02:18 · 960 阅读 · 1 评论 -
好资源
Linux/c/c++/iphone原创 2012-09-03 15:39:28 · 369 阅读 · 0 评论 -
BSS段,数据段,代码段,堆内存和栈
原创 2012-09-14 10:16:35 · 657 阅读 · 0 评论 -
如何优化C/C++语言代码
如何优化C/C++语言代码(程序员必读)1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用转载 2012-10-10 15:40:00 · 3064 阅读 · 0 评论 -
C/C++注意几点<必看>
YI. 堆栈溢出一般是由什么原因导致的?递归调用深度过深(栈)或垃圾未回收Y2. 什么函数不能声明为虚函数?一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。 设置虚函数须注意: 1:只有类的成员函数才能说明为虚函数; 2:静态成员函数不能是虚函数; 3:内联函数不能为虚函数; 4:构造函数不能是虚函数; 5:析构函数可以是虚函数,而且通原创 2012-08-31 23:24:19 · 624 阅读 · 0 评论 -
swap函数
大家都懂,就不用多说,用引用或者指针就能解决这个问题(在c++中用引用是更好的做法,引用不是c的语法吧)。问题在于,笔试面试中考的比这个更有难度一点,加了个限制:不使用中间变量。知道答案之后还是比较简单的,直接上答案了:void swap(int &a,int &b){a=a+b;b=a-b;a=a-b;}还有一种思路更高明,因为上面转载 2012-10-12 20:36:19 · 459 阅读 · 0 评论 -
函数模板与类模板
模板 模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。模板分为函数模板和类模板两种。 (1)函数模板 函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板: template class T> //或写转载 2012-10-17 20:43:54 · 486 阅读 · 0 评论 -
c/c++ 经典笔试
1、编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:class String{ public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); /原创 2012-08-31 15:22:13 · 727 阅读 · 0 评论 -
空类中成员函数
答:class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取址运转载 2012-10-17 22:25:52 · 1118 阅读 · 0 评论 -
重写和重载与隐藏
1、重载的特征:在同一个类中;函数名字相同;参数不同;virtual 关键字可有可无。2、重写(覆盖)特征是:分别位于派生类与基类;函数名字相同;参数相同;基类函数必须有virtual 关键字(这点非常要注意)。 个人认为以上两点比较容易记得住,但是C++的隐藏规则使问题复杂性陡然增加。规则如下: 1、如果派生类的函数与基类的函数同名,但是参数不同,virtual关键字原创 2012-10-18 09:40:34 · 654 阅读 · 0 评论 -
几个面试题精选
面试题35:typedef和define有什么区别(1)用法不同:typedef用来定义一种数据类型的别名,增强程序的可读性。define主要用来定义常量,以及书写复杂使用频繁的宏。(2)执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。(3)作用域不同:typedef转载 2012-10-18 10:26:34 · 943 阅读 · 0 评论 -
C++关键字
基本的数据类型关键字:void, int, char, float, double, bool类型修饰关键字:long, short, singed, unsigned 布尔型字面值:true, false非常重要的变量声明修饰符:const, inline存储类别关键字:auto, static, extern, , register控制结构关键字:for, while, i原创 2012-10-18 21:03:39 · 389 阅读 · 0 评论 -
经典笔试2
1、写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为原创 2012-08-31 21:24:15 · 353 阅读 · 0 评论 -
C++类与对象【注意】
1、静态成员函数只能访问静态数据成员,要访问非静态数据成员必须以参数形式传进去。2、友元函数可以访问该类所有成员,但不能直接引用对象名,必须以参数形式传递对象名,再通过对象名访问成员。原创 2012-09-01 17:51:34 · 344 阅读 · 0 评论 -
模板类、类模板、模板函数、函数模板
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。 这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺。 1.函数指针——指针函数转载 2012-08-29 10:41:06 · 262 阅读 · 0 评论 -
友元函数和友元类
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检转载 2012-08-27 22:22:56 · 1401 阅读 · 0 评论 -
C++之const全面剖析
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说明参考代码转载 2012-08-29 13:55:22 · 252 阅读 · 0 评论 -
深入理解mutable
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面转载 2012-08-29 13:39:19 · 307 阅读 · 0 评论 -
C++之拷贝构造函数
拷贝构造函数是C++最基础的概念之一,大家自认为对拷贝构造函数了解么?请大家先回答一下三个问题:1. 以下函数哪个是拷贝构造函数,为什么?X::X(const X&); X::X(X); X::X(X&, int a=1); X::X(X&, int a=1, b=2); 2. 一个类中可以存在多于一个的拷贝构造函数吗?3转载 2012-08-29 19:46:57 · 258 阅读 · 0 评论 -
C++重载,覆盖与隐藏深度剖析
“overload”翻译过来就是:超载,过载,重载,超出标准负荷;“override”翻译过来是:重置,覆盖,使原来的失去效果。 先来说说重载(Overload)的含义,在日常生活中我们经常要清洗一些东西,比如洗车、洗衣服。尽管我们说话的时候并没有明确地说用洗车的方式来洗车,或者用洗衣服 的方式来洗一件衣服,但是谁也不会用洗衣服的方式来洗一辆车,否则等洗完时车早就散架了。我们并不要那转载 2012-08-30 17:04:23 · 448 阅读 · 0 评论 -
sscanf 之 正则表达式
先看一小程序:#include int main(){const char* s = "hello/Yulay@122";char buf[20];sscanf( s, "%*[^/]/%[^@]", buf );printf( "%s\n", buf );return 0;}结果为:Yulay总结:%*[^/]:读入一个不是‘\’ 字符串,遇到原创 2012-08-31 09:00:19 · 623 阅读 · 0 评论 -
C++必知
2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一转载 2012-08-30 17:21:04 · 442 阅读 · 0 评论 -
strcpy和memcpy区别
strcpy和memcpy主要有以下3方面的区别: extern char *strcpy(char *dest,const char *src); 1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易原创 2012-08-31 15:07:33 · 596 阅读 · 0 评论 -
C预编译中的几个符号《重要》
1.#define Conn(x,y) x##yx##y表示x连接y,举例说明:int n = Conn(123,456); 结果就是n = 123456;char* str = Conn("abc","def"); 结果就是 str = "abcdef";2.#define ToString(x) #x#x就是给x加上双引号,举例说明:char* str =转载 2012-08-31 09:08:32 · 663 阅读 · 0 评论 -
C++之static深析
一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局原创 2012-08-31 00:10:48 · 1276 阅读 · 0 评论 -
C++指针与引用区别
指针和引用的区别总结1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域3.从编译上看:程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不转载 2012-08-31 22:55:56 · 268 阅读 · 0 评论 -
C++运算符优先级
http://www.cppreference.com/operator_precedence.html PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access转载 2012-10-18 21:21:54 · 375 阅读 · 0 评论