文章分类 -  C/C++

C++基本语法:string学习(摘抄)
摘要:之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用=进行赋值操作,==进行比较,+做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须包含头文件<string>。如下:#include<string>//注意这里不是string.hstring.h是C字符串头文件1.声明一个C++字符串 声明一个字符串变量很简单: strin 阅读全文
posted @ 2012-11-29 23:42 走出地平线 阅读(63) 评论(0) 推荐(0)
C++基本语法:CString string char*之间转换
摘要:1、CString to char*1)pc = str.GetBuffer(str.GetLength() + 1);Str.ReleaseBuffer();2)pc = (SLPSTR)(LPCTSTR)str;3)int nsttLength = str.GetLength() + 1;pc = new char[nstrLength];Strncpy(pc, (LPCTSTR)str, nstrLength);2、char* to CStringStr.Format(“%s”, pc);3、CString to strings = str.GetBuffer();str.Release 阅读全文
posted @ 2012-11-29 23:39 走出地平线 阅读(112) 评论(0) 推荐(0)
试题小结6(句子倒置单词不倒置)
摘要:面题:上机操作倒置句子单词不倒置,以空格为分隔符例:my name is zheng变成 zheng is name my方法一:(用string)int main(void){ string s = "Tommmm is my cat"; int k = s.length(); TRACE("%s\n", s.c_str()); int j; ReverseString(&s, j); //对字符串逆置 ReverseWord(&s, j, s.length()-1); //对最后一个单词逆置 TRACE("%s\n" 阅读全文
posted @ 2012-08-30 23:52 走出地平线 阅读(74) 评论(0) 推荐(0)
试题小结6(库函数的重写1strcpy)
摘要:重写字符串拷贝库函数:char *strcpy(char *strDst, const char *strSrc){ if (NULL == strDst || NULL == strSrc) { throw "Invalid arguments"; } char *strDstCopy; strDstCopy = strDst; while('\0' != *strDst)//不是*strSrc != '\0'也不是两者的或 或者 与 { *strDst = *strSrc; strSrc++; strDst++; }/* while((* 阅读全文
posted @ 2012-08-26 04:32 走出地平线 阅读(99) 评论(0) 推荐(0)
试题小结5(空间申请2)
摘要:对调用函数空间申请小结:示例1:void GetMemory(char *p){ p = (char *)malloc(100);}void fun(){ char *str = NULL; GetMemory(str); strcpy(str, "udbfl"); TRACE("%s", str);}结果分析:GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完 char *str = NULL; GetMemory( str ); 后的str仍然为NULL。示例2:char *GetM 阅读全文
posted @ 2012-08-26 03:49 走出地平线 阅读(113) 评论(0) 推荐(0)
试题小结5(二维空间申请)
摘要:一、动态申请二维空间方法一、二维都未知情况 int nRow = 4; int nCol = 8; int nValue = 0; int **p2Dim = NULL; p2Dim = new int *[nRow]; //申请空间 for (int nIndex=0; nIndex<nRow; nIndex++) { p2Dim[nIndex] = new int [nCol]; } //赋值 for (int nRowIndex=0; nRowIndex<nRow; nRowIndex++) { ... 阅读全文
posted @ 2012-08-26 02:45 走出地平线 阅读(116) 评论(0) 推荐(0)
试题小结4(内存分配)
摘要:这文章是他人博客转过来的1、内存分配方式内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。2、常见的... 阅读全文
posted @ 2012-08-25 17:23 走出地平线 阅读(97) 评论(0) 推荐(0)
试题小结3(指针和数组)
摘要:数组与指针的区别数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。(1)修改内容上的差别char a[] = “hello”;a[0] = ‘X’;char *p = “world”; // 注意p 指向常量字符串p[0] = ‘X’; // 编译器不能发现该错误,运行时错误(2)内容复制与比较不能对数组名进行直接复制与比较,而应用库函数strcpy比较则是strcmp.(3)数组名为其首地址,是不能被修改的,也不能有运算符进行运算。(数组地址与容量在生命期内保持不变,只是数组的内容可以改变)(4)用运算符sizeof 可以计算出数组的容量(字节数) 阅读全文
posted @ 2012-08-25 17:00 走出地平线 阅读(90) 评论(0) 推荐(0)
试题小结2(指针和引用)
摘要:指针和引用引用的介绍: 引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。1、将“引用”作为函数参数有哪些特点? (1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所.. 阅读全文
posted @ 2012-08-25 15:06 走出地平线 阅读(155) 评论(0) 推荐(0)
试题小结1(const关键字)
摘要:12年8月离开单位,没有做C/C++准备就去面试,在笔试题中完成相当差劲,十分难堪。面后,回家中看面试宝典发现大多题目都相同的。现将部分试题归如下:关键字const的介绍一、Const作用:1、可以定义const常量(区别与C的不同,不是定义不可修改的变量而是常量) Const int n=100; //n为常量2、便于进行类型检查 const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。 举例:void f(const int i) { .........} //对传入的参数进... 阅读全文
posted @ 2012-08-25 14:06 走出地平线 阅读(105) 评论(0) 推荐(0)