c++基础

引用和指针

引用是就是对象本身。对应内存 就一个地址。
指针对应内存是两个地址。
对象本身一个地址, 指针一个地址。
指针的地址里面存的内容就是 对象的地址。

引用就是对象本身。
指针是转了一层啊。
指针的指针就是转了2层。
指针的指针的指针 就是转了3层。。
以此类推。

 引用就是直接取了一个别名,不需要重新开辟内存来存哪个东西的 内存。。 
 就相当于给对象取了个不同的名字 
 除了一些特殊的情况引用貌似是没有空间分配的
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 
 
形式上的区别:指针可以不初始化,引用必须初始化,且绑定后不能再变。
如果你想一会儿指向这个对象一会指向那个对象就用指针,而引用只是变量的另一个名字。
 区别本身在于,你可以理解引用就是地址 
 指针是一个int32的变量  反正一切的差别就在于那4个byte的空间 引用没有4个byte的空间。
变量的值等于地址 你指针一定义,就有空间了,指针本身是个变量,引用不是

向函数中传递指针和传递指针的引用的区别:
     如果是传递指针,那么会先复制该指针,在函数内部使用的是复制后的指针,这个指针与原来的指针指向相同的地址,如果在函数内部将复制后的指针指向了另外的新的对象,那么不会影响原有的指针;
但是对于传递指针引用,如果将传递进来的指针指向了新的对象,那么原始的指针也就指向了新的对象,这样就会造成内存泄漏,因为原来指针指向的地方已经不能再引用了,即使没有将传递进来的指针指向新的对象,而是在函数结束的时候释放了指针,那么在函数外部就不能再使用原有的指针了,因为原来的内存已经被释放了、
 
1,引用就是一个常量指针
2,引用是一个自动去引用的指针

函数调用的时候 

指针和引用都是传地址的值过去,引用传地址没有copy,而指针就是copy了下地址,传过去了。
不同的是指针本身是个变量,引用是个常量
CCSpriteFrame* CCSpriteFrame::create(const char* filename, const CCRect& rect)

char * 和 char[]

http://blog.csdn.net/tsengyuen/article/details/4818645

c类型字符串和c++ std:string的互相转换

char ch[100];
string str;

把char*(c类型的string)数组转换为string:

str = ch; //即可
str.assign(ch); //也可

把string类型转换为char*数组:
strcpy(ch,str.c_str());    //即可
for(int i = 0; i < str.length(); i++)   //也可
{
    ch = str.at(i);
    ch ++;
}

比较两个字符串相等
string str1;
string str2;

strcmp(str1.c_str(),str2.c_str());
< 0 string1 less than string2
= 0 string1 identical to string2
> 0 string1 greater than string2

清空一个char*数组
memset(void *dest,int c,size_t count)
拷贝char*数组
memcpy(void *dest,const void * src,size_t count)

判断是否是一个字符串的子串

strstr();

str.find("")

c++对象模型

http://www.cnblogs.com/skynet/p/3343726.html

原文地址:https://www.cnblogs.com/as3lib/p/3528569.html