知识点汇总

1、strrchr()函数:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。
2、strstr() 函数:搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。

3、

do
{
    ...
}while(0)  

有个好处里面运行可以直接break到下面代码而不用goto

4、使用strncpy_s 比 使用strncpy更加安全

5、 int const *  |  p  
 p就是一个普通的指针变量,可以指向任意一个int值,但是指向的int值是一个不变常量
 int *        |   const p
 p是const常量,p是const所以不能变,也就是p指向的地址不可变,但是指向的地址中对应
 的内存是可改变的

6、Debug编译成功运行时提示缺失ACEd.dll等dll,就是要把这些文件放入到输出文件目录(在VS配置属性链接器常规里面设置输出文件路径)

7、好多这种用法:

class CDownload:
{
public:
<strong>    static CDownload &Instance()
      {
             static CDownload s;
             return s;
      }</strong>
    void Start(uString strPostfix); 
}
<strong>CDownload::Instance().</strong>Start(strPostfix);
</pre><pre code_snippet_id="325463" snippet_file_name="blog_20140504_2_7731808" name="code" class="cpp">

 

8、在宏定义define中经常看到两个字符串##和#,这里把它的用法做一下说明:      
    ##是一个连接符号,用于把参数连在一起         
         例如: > #define  FOO(arg)   my##arg       则 > FOO(abc)  相当于   myabc           
   #是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串         
         例如: > #define STRCPY(dst, src)   strcpy(dst, #src)   则  > STRCPY(buff, abc) 相当于 strcpy(buff, "abc")        
   另外,如果##后的参数本身也是一个宏的话,##会阻止这个宏的展开 。

 

9、strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止)

     strcpy的原型为 char *strcpy(char *dest, const char *src)

    memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符)

     memcpy的原型为 void *memcpy(void *dest, const void *src, size_t n);

 

STL之copy函数原型:

template<class InputIterator, class OutputIterator>
   OutputIterator copy(
      InputIterator _First, 
      InputIterator _Last, 
      OutputIterator _DestBeg
   );

    //如: 将数组向左移动两位  

    copy(src + 2, src + 7, src);  

 

posted @ 2014-05-04 10:09  Kiveen  阅读(125)  评论(0编辑  收藏  举报