20140729

1、关于while((*pa++=*pb++)!=‘\0‘)和while((*pa=*pb)!=‘\0‘) {pa++;pb++;}的不同

#include<stdio.h>

void main()
{
    char a[]="abcde";
    char b[]="gh";
    char *pa=a;
    char *pb=b;
    while((*pa++=*pb++)!=‘\0‘)
        ;
    printf("%s",pa);
}

执行前: a[]="abcde"; b[]="gh";

执行后:a[]="gh\0de"; b[]="gh";

pa最终指向的是d的位置。

 

 

#include<stdio.h>
void main()
{
    char a[]="abcde";
    char b[]="gh";
    char *pa=a;
    char *pb=b;
    while((*pa=*pb)!=‘\0‘)
    {pa++;pb++;}
    printf("%s",pa);
}

执行前: a[]="abcde"; b[]="gh";

执行后:a[]="gh\0de"; b[]="gh";

pa最终指向的是\0的位置。

2、合并两个数组代码(已测试)

剑指offer49页、相关题目

#include<stdio.h>
#include<iostream>
const int length=50;
using namespace std;
int *MergeArray(int *A1,int *A2,int len1,int len2)
{
    if(A2==NULL)
        return A1;
    if(A1==NULL||len1<=0||len2<=0)
        return NULL;
    int len=len1+len2;
    int indexofA1=len1-1,indexofA2=len2-1,indexofMerge=len-1;
    while(indexofA1>=0&&indexofA1<indexofMerge)
    //indexofA1<indexofMerge是为了防止无效赋值,即A1赋值自己。如 A1=1 2 3 4;A2=4 5 6 7的例子
    {

        if(A1[indexofA1]>A2[indexofA2])
            {A1[indexofMerge--]=A1[indexofA1--];}
        else if(A1[indexofA1]<A2[indexofA2])
            {A1[indexofMerge--]=A2[indexofA2--];}
        else if(A1[indexofA1]==A2[indexofA2])
            {A1[indexofMerge--]=A1[indexofA1--];}
    }
    if(indexofA1==-1)
    {
        for(int i=indexofA2;i>=0;i--)
            A1[i]=A2[i];
    }
    return A1;
}

void display(int *arr, int len)
{
    if(arr == NULL || len < 0)
        return;

    for(int i = 0; i < len; i++)
        cout << arr[i] << "  ";
    cout << endl;
}

int main()
{
    int *arr1 = new int[length];
    int *arr2 = new int[length];
    int len1 = 0, len2 = 0;
    cout << "请输入数组1的数据(-1结束):" << endl;
    int temp;
    cin >> temp;
    while(temp != -1)
    {
        arr1[len1++] = temp;
        cin >> temp;
    }

    cout << "请输入数组2的数据(-1结束):" << endl;
    cin >> temp;
    while(temp != -1)
    {
        arr2[len2++] = temp;
        cin >> temp;
    }

    MergeArray(arr1, arr2, len1, len2);

    display(arr1, len1 + len2);
    return 0;
}

2、四个C++的类型转换的关键字

//static_cast和reinterpret_cast<>()的区别 
#include<iostream>
using namespace std;
void main()
{
    float f=3.14;
    int *i=reinterpret_cast<int *>(&f);//成功运行,float指针到int指针的转换可以通过编译
//  int i=reinterpret_cast<int>(f);//失败运行,应为这是标准转换,编译器知道要用static_cast<int>
//int i=static_cast<int>(f)//隐式转换通过编译
//int *i=static_cast<int *>(&f)//不能通过编译,因为int指针类型和float类型不是标准转化,两种类型是无关类,编译出错
}

 

const_cast的作用:

class B{

public:

int m_iNum;

}

void foo(){

const B b1;

b1.m_iNum = 100; //comile error

B b2 = const_cast<B>(b1);

b2. m_iNum = 200; //fine

}

3、c++三个基本特征

http://blog.csdn.net/ruyue_ruyue/article/details/8211809

封装、继承,多态

封装:把数据和操作数据的方法整合到一起形成一个有机的整体(类),对数据的访问只能通过这些方法。作用:隐藏实现细节,使代码模块化

继承:使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。

多态:允许将子类类型的指针赋值给父类类型的指针,通过父类指针可以调用子类中的虚函数。

是每个类用了一个虚表,每个类的对象用了一个虚指针

20140729,布布扣,bubuko.com

时间: 2024-11-21 00:18:10

20140729的相关文章

2014-07-29 Asp.Net 工程师 笔试题

一.选择题    1.下列描述错误的是() A  类不可以被多重继承而接口可以: B  抽象类自身可以定义成员而接口不可以: C  抽象类和接口都不能被实例化: D   一个类可以继承多个基类和多个基接口: 2.下列哪个名词和WebServices不直接相关() A  UDDI B  GUID C  WSDL D  SOAP 3.下列选项中,()是引用类型 A  enum B struct C  string D  Int 4.声明一个委托 public delegate int myCallB

2014-07-29 浅谈MVC框架中Razor与ASPX视图引擎

今天是在吾索实习的第15天.随着准备工作的完善,我们小组将逐步开始手机端BBS的开发,而且我们将计划使用MVC框架进行该系统的开发.虽然我们对MVC框架并不是非常熟悉,或许这会降低我们开发该系统的效率,但是我们可以通过边学边做的方式来实现其开发的.这不仅便于我们日后对系统的管理与维护,而且还给我们带来一个学习的动力与实践的地方. 但我们在创建一个基于MVC框架的项目时,就遇到一些问题了.那就是MVC的视图引擎是有两种的,一种是Razor,会以cshtml后缀的文件作为视图文件:另一种是ASPX,

2014-07-29 阿里内推初面

阿里电话初面:研发 阿里面试官给人很友善的感觉,赞一个. 1.自我介绍,简历上的项目. 2.最近在学什么?答:算法和数据结构,准备笔试面试. 3.Java虚拟机相关.不熟. 4.Java内存管理.堆栈,垃圾回收,GC原理等相关问题.专门准备过,答得还行. 5.看过Java源代码不?答:看过常用的,集合,LinkedList,HashMap等实现代码,其他的没研究过. 6.HashMap的底层实现和特点. 7.Spring MVC的好处.答:解耦. 8.最近看什么书?答:喜欢看书,看书挺多.专业的

log4j.xml的实用例子

大多数讲log4j配置的教程用的都是log4j.properties文件,我觉得xml或许更好一点,在这里我提供一个我已经用于生产环境的log4j.xml的例子,先上代码,然后再解释: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.

百度the big talk节目

主要事件 2015-03-09期:硅谷峰会:智能机器人&对话沃兹尼亚克 2015-03-02期:硅谷峰会:创新金融和智能城市 2015-02-15期:硅谷峰会:数字生物学和数字医药 2015-02-11期:硅谷峰会:深度学习和在线教育 2015-02-09期:硅谷行:探索科技创新之都 2015-01-27期:硅谷峰会前瞻 2014-12-21期:生命科学开始走俏 2014-12-15期:计算机的未来&机器人汽车 2014-12-07期:奇点大学公开课指数思维&人工智能 2014-1

Android 时间轴

效果图: 数据是随便填的,显得有点乱,但是不影响效果.实现方面主要是用ListView来实现,主要是根据ListView的item位置与上一条数据进行比较,来控制时间的显示隐藏效果.思路很简单,下面看代码实现: 首先是页面的整体布局,很简单,就一个ListView: res/layout/activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

用数组模拟栈的结构

package datastruct; import java.util.Arrays; /** * 用数组模拟栈的结构:后进先出(LIFO) 线性表结构 * @author stone * 2014-07-29 06:34:49 */ public class SimulateStack<E> { public static void main(String[] args) { SimulateStack<String> ss = new SimulateStack<Str

ios 下锁使用- 09-多线程

ios 下锁使用 时间:2014-08-08 15:36:56 总结下我所了解的ios下的锁: 1. 互斥锁 @synchronized,@synchronized块隐式的添加一个异常处理例程来保护代码.该处理例程会在异常抛出的时候自动的释放互斥锁.这意味着为了使用@synchronized指令,你必须在你的代码中启用异常处理. NSLock NSRecursiveLock,递归锁,一个线程中可以多次使用 NSConditionLock,条件锁,其实也是一种互斥锁:类似的有NSCondition

在Windows 2003 server 64bit 安装 HQ CRP 5.8.2.1

首先需要安装 postgresql 9.1 ,下载地址,如下: http://get.enterprisedb.com/postgresql/postgresql-9.1.14-1-windows-x64.exe 安装中需要注意两个地方,一个是 选择 C(你懂的),另一个是注意将 postgres用户赋予安装postgresql的目录的所有权限. 然后使用psql工具,创建数据库 HQ 下载 Hyperic HQ 中文版 http://www.innovatedigital.com/downlo