c++基础
引用和指针
引用是就是对象本身。对应内存 就一个地址。
指针对应内存是两个地址。
对象本身一个地址, 指针一个地址。
指针的地址里面存的内容就是 对象的地址。
引用就是对象本身。
指针是转了一层啊。
指针的指针就是转了2层。
指针的指针的指针 就是转了3层。。
以此类推。
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。
如果你想一会儿指向这个对象一会指向那个对象就用指针,而引用只是变量的另一个名字。
变量的值等于地址 你指针一定义,就有空间了,指针本身是个变量,引用不是
向函数中传递指针和传递指针的引用的区别:
如果是传递指针,那么会先复制该指针,在函数内部使用的是复制后的指针,这个指针与原来的指针指向相同的地址,如果在函数内部将复制后的指针指向了另外的新的对象,那么不会影响原有的指针;
但是对于传递指针引用,如果将传递进来的指针指向了新的对象,那么原始的指针也就指向了新的对象,这样就会造成内存泄漏,因为原来指针指向的地方已经不能再引用了,即使没有将传递进来的指针指向新的对象,而是在函数结束的时候释放了指针,那么在函数外部就不能再使用原有的指针了,因为原来的内存已经被释放了、
2,引用是一个自动去引用的指针
函数调用的时候
不同的是指针本身是个变量,引用是个常量
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