上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页
摘要: 很多公司都问到了二维指针,二维数组,以及指向数组的指针的相关问题,在此,简单的给大家总结下,为大家在面试的时候增加一定的信心。这类题目,总的来说,实际上可以归纳为如下几点:1、 有一个一维数组int a1[10],定义一个指针,指向一维数组名。2、 有一个一维数组int a2[10],定义一个指针,指向一维数组名的地址。3、 有一个二维数组int a3[3][4],定义一个指针,指向二维数组名。4、 有一个二维数组int a4[3][4],定义一个指针,指向二维数组名的地址。对于这类题目,刚看到,似乎感觉比较没有思路,其实我们细心思考下,这四个问题,都是让我们定义一个指针,指向一片连续的内存空 阅读全文
posted @ 2013-09-11 20:48 问笑 阅读(524) 评论(0) 推荐(0)
摘要: 问题描述:假设有两个整数A=8,B=9 ,现在要交换A和B的值,使得A=9,B=8.原理分析:方法一:利用一个辅助空间C,然后先将A中的数据放在C中,然后再将B中的数据放到A中,最后再将C中的数据放到A中,这样就可以实现数据的交换了。C语言代码实现(子函数):点击(此处)折叠或打开void swap1(datatype *a,datatype *b){datatype tmp=*a;*a=*b;*b=tmp;}方法二:为了节省一个辅助空间,首先将A+B的和存储在A中,这一步可能会出现溢出的问题,所以这个方法不是很好的做法,不过这个方法提供了一个思路。然后将改变后的A减去B赋值给B,这样B中存放 阅读全文
posted @ 2013-09-11 19:13 问笑 阅读(450) 评论(0) 推荐(0)
摘要: void func1(char a[]){printf("%d",sizeof(a));}void main(){char b[55];func1(b);}输出为4,说明传递的参数数组自动退化为同类型的指针,这个例子中不论数组的容量为多少,sizeof(a)始终等于sizeof(char *)。C语言中的数组和指针总保持着'千丝万缕'的联系,这里仅针对数组作为函数实参时的情况做些说明^_^。C语言中的数组可分为一维数组和多维数组两类,而多维数组中又以二维数组最为常见。这里也仅针对这一维数组和二维数组作简要说明。看过'高质量C++编程指南'的人 阅读全文
posted @ 2013-09-11 14:11 问笑 阅读(267) 评论(0) 推荐(0)
摘要: 今天在论坛上有朋友提问:声明函数如下void function(int** pInt),意图是想参数传递一个二维数组。于是就定义了一个二维数组,比如 int[1][1],然后调用函数。结果如何?当然是失败了,编译器提示:cannot convert parameter 1 from 'int [1][1]' to 'int **',参数类型不匹配。上述过程我自己也试了,当然不匹配,类型完全不一样嘛。然后我就想了:如果要将一个二维数组作为形参,那么函数该怎么声明? 来看《C++ Primer》中给出的方法:数组名作为形参[cpp] view plaincopypr 阅读全文
posted @ 2013-09-11 13:12 问笑 阅读(226) 评论(0) 推荐(0)
摘要: 1. 父类的static变量和函数在派生类中依然可用,但是受访问性控制(比如,父类的private域中的就不可访问),而且对static变量来说,派生类和父类中的static变量是共用空间的,这点在利用static变量进行引用计数的时候要特别注意。 2. static函数没有“虚函数”一说。因为static函数实际上是“加上了访问控制的全局函数”,全局函数哪来的什么虚函数? 3. 派生类的friend函数可以访问派生类本身的一切变量,包括从父类继承下来的protected域中的变量。但是对父类来说,他并不是friend的。继承可以使得子类具有父类的各种属性和方法,而不需要... 阅读全文
posted @ 2013-09-05 21:15 问笑 阅读(2334) 评论(0) 推荐(0)
摘要: 1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL 微观上: 从数据类型,数据库的结构等等回答 2. 如何使用Oracle的游标? 1). oracle中的游标分为显示游标和隐式游标 2). 显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录 阅读全文
posted @ 2013-09-04 22:49 问笑 阅读(622) 评论(0) 推荐(0)
摘要: 哈哈,从M$ Visual C++ Team的Andy Rich那里又偷学到一招:VC8的隐含编译项/d1reportSingleClassLayout和/d1reportAllClassLayout。看个复杂的例子吧(如下),现在假设我们想知道Derived类的对象布局,怎么办? 在Project Properties->C++->Command Line->Additional Options里面加上/d1reportSingleClassLayoutDerived吧!classCommonBase{intco;};classBase1:virtualpublicComm 阅读全文
posted @ 2013-09-04 21:16 问笑 阅读(280) 评论(0) 推荐(0)
摘要: 一 多重继承1) 代码:Code#include using namespace std;class B1{public:int x;virtual void v1(){ cout (pB1); pD->x = 10; pD->y = 20; pD->z = 30; pD->a = 40; PrintVTAndMember(pD); delete pD;}6) 验证代码运行结果:7)总结:与单继承相同的是所有的虚函数都包含在虚函数表中,所不同的多重继承有多个虚函数表,当子类对父类的虚函数有重写时,子类的函数覆盖父类的函数在对应的虚函数位置,当子类有新的虚函数时,这些虚函 阅读全文
posted @ 2013-09-04 20:36 问笑 阅读(489) 评论(0) 推荐(0)
摘要: 继承是C++作为OOD程序设计语言的三大特征(封装,继承,多态)之一,单一非多态继承是比较好理解的,本文主要讲解GCC环境下的多重继承和虚拟继承的对象内存布局。一、多重继承 先看几个类的定义:01classTop02{03public:04inta;05};0607classLeft :publicTop08{09public:10intb;11};1213classRight :publicTop14{15public:16intc;17};1819classBottom :publicLeft,publicRight20{21public:22intd;23}; 不难想象,Le... 阅读全文
posted @ 2013-09-04 20:31 问笑 阅读(681) 评论(0) 推荐(0)
摘要: C++对象内存布局测试总结 http://hi.baidu.com/����/blog/item/826d38ff13c32e3a5d6008e8.html 上文是半年前对虚函数、虚拟继承的理解。可能有一些错漏。而且只是理解了比较简单的部分,表达也不够清晰,这次决定花的时间再做一次总结。 对于普通的C++对象内存布局,简单得不得了,就不做总结了。这里只总结涉及到虚拟继承的情况。 因为不同编译器对虚拟继承的实现采用不同的方式,所以要完整的分析是不可能的。这里只考虑VS2005/2008,还有简单涉及GCC编译器。1、单个虚拟继承只是为了分析而已,实际中并没有太大的作用。跟虚拟继承相关的派... 阅读全文
posted @ 2013-09-04 20:29 问笑 阅读(284) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页