20140729 while((*pa++=*pb++)!='\0') 合并数组代码 C++类型转换关键字 封装 多态 继承
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=;
using namespace std;
int *MergeArray(int *A1,int *A2,int len1,int len2)
{
if(A2==NULL)
return A1;
if(A1==NULL||len1<=||len2<=)
return NULL;
int len=len1+len2;
int indexofA1=len1-,indexofA2=len2-,indexofMerge=len-;
while(indexofA1>=&&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==-)
{
for(int i=indexofA2;i>=;i--)
A1[i]=A2[i];
}
return A1;
} void display(int *arr, int len)
{
if(arr == NULL || len < )
return; for(int i = ; i < len; i++)
cout << arr[i] << " ";
cout << endl;
} int main()
{
int *arr1 = new int[length];
int *arr2 = new int[length];
int len1 = , len2 = ;
cout << "请输入数组1的数据(-1结束):" << endl;
int temp;
cin >> temp;
while(temp != -)
{
arr1[len1++] = temp;
cin >> temp;
} cout << "请输入数组2的数据(-1结束):" << endl;
cin >> temp;
while(temp != -)
{
arr2[len2++] = temp;
cin >> temp;
} MergeArray(arr1, arr2, len1, len2); display(arr1, len1 + len2);
return ;
}
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 while((*pa++=*pb++)!='\0') 合并数组代码 C++类型转换关键字 封装 多态 继承的更多相关文章
- 初识Javascript.03 -- switch、自增、while循环、for、break、continue、数组、遍历数组、合并数组concat
除了注意大小写,别的木啥了 Switch语句 Switch(变量){ case 1: 如果变量和1的值相同,执行该处代码 break; case 2: 如果变量和2的值相同,执行该处代码 break; ...
- PHP合并数组的三种方法的分析与比较
常用的合并数组的方法有三种:array_merge().array_merge_recursive().+,下面一个一个介绍 array_merge() 此函数合并一个或多个数组,当输入的数组中有相同 ...
- php中array_merge合并数组详解
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的).如果数组是数字索引的,则键名会以连续方式重新索引. 注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数 ...
- 【Java必修课】各种集合类的合并(数组、List、Set、Map)
1 介绍 集合类可谓是学习必知.编程必用.面试必会的,而且集合的操作十分重要:本文主要讲解如何合并集合类,如合并两个数组,合并两个List等.通过例子讲解几种不同的方法,有JDK原生的方法,还有使用第 ...
- <转>浅析长度为0的数组
前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该 ...
- PHP中通过加号合并数组
通常,我们合并多个数组用的是array_merge()函数,其实,PHP手册中关于数组操作符的介绍给了我们更简单的方法,那就是"+"号,看看下面的例子就明白了(详细了解) 代码: ...
- C/C++ 中长度为0的数组
参考文献:http://blog.csdn.net/zhaqiwen/article/details/7904515 近日在看项目中的框架代码时,发现了了一个奇特的语法:长度为0的数组例如 uint8 ...
- PHP合并数组array_merge函数运算符加号与的区别
两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用“+”合并数组则会把最先出现的值作为最终结果返回,而把后面的数 ...
- PHP中使用函数array_merge()合并数组
如果明白数组其实就是map的话,我想你就会明白array_merge为什么要这么实现了 PHP中合并数组分成两种情况 1.如果这两个数组中有相同的字符串键名: <?php header('Con ...
随机推荐
- Eclipes 配置src.zip(查看源代码)
接着将这些改变应用,重启eclipes即可.
- Rust <4>:所有权、借用、切片
tips:栈内存分配大小固定,访问时不需要额外的寻址动作,故其速度快于堆内存分配与访问. rust 所有权规则: 每一个值在任意时刻都有且只有唯一一个所有者 当所有者离开作用域时,这个值将被丢弃 所有 ...
- NMS python实现
import numpy as np ''' 目标检测中常用到NMS,在faster R-CNN中,每一个bounding box都有一个打分,NMS实现逻辑是: 1,按打分最高到最低将BBox排序 ...
- Debug模式的三种配置方法
使用`app.config.from_object`的方式加载配置文件: 1. 导入`import config`.2. 使用`app.config.from_object(config)`. ### ...
- hbuilder模拟器端口
模拟器 | 端口 夜神安卓模拟器夜神安卓模拟器 62001 逍遥安卓模拟器逍遥安卓模拟器 21503 BlueStacks(蓝叠安卓模拟器)BlueStacks(蓝叠安卓模拟器) ...
- org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported
最后找到我的问题,springmvc配置文件中没加 <mvc:annotation-driven/> java代码: @RequestMapping(value="/reques ...
- IDEA webapp文件夹不识别解决方案
使用IDEA 创建moudule 用的是的是maven archertype-quickstart ,自动生成并么有webapp目录,于是我从别的项目中拷贝了一个,发现webapp文件夹图标和普通文件 ...
- Ansible的roles标准化与Jenkins持续集成(三)
Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...
- sysprep
今天做虚拟机模板,以及克隆.单纯的克隆会造成很多冲突问题的产生,所以在这里,windows自带的sysprep功能很好的解决了这一点. 路径位于:C:\Windows\System32\Sysprep ...
- codeforces1139E Maximize Mex 二分图匹配
题目传送门 题意:给出n个人,m个社团,每个人都有一个标号,一个能力值,并且属于一个社团,第i天的凌晨,第$k_i$个人会离开.每天每个社团最多派一个人出来参加活动.派出的人的能力值集合为S,求每天$ ...