zoukankan      html  css  js  c++  java
  • C++知识点总结(三)

    1.字符串查找字符函数strchr

           strchr函数原型:extern char*strchr(const char *s,char c);

                功能:查找字符数组s中首次出现字符c的位置

                说明:返回首次出现c的位置的指针,返回偏移指针地址,如果s中不存在c则返回NULL。

    #include <string.h>
    #include <stdio.h>
    int main(void)
    {
        char string[17];
        char *ptr,c='r';
        strcpy(string,"This is a string");
        ptr=strchr(string,c);
        if(ptr)
            printf("Thecharacter%cisatposition:%s
    ",c,ptr);
        else
            printf("Thecharacterwasnotfound
    ");
        return0;
    }
         运行结果:The character r is at position: ring

    注意:此功能可以用于,利用指针循环更改某个字符数组各位置的字符


    2.返回指针类型

            倘若在子函数中定义的指针指向的对象且将指针返回时,由于变量存在于栈中,调用结束自动释放,会导致程序错误。可以使用:

               (1)使用使用new在堆上动态分配内存,然后将其返回。返回时不会摧毁,因为堆是全局存在的。

               (2)定义局部静态指针,将其返回。

               (3)将局部char指针返回,赋值给string 对象。此时调用拷贝构造函数,不会引起内存泄露。

               (4)定义返回类型为常量指针,然后将局部指针返回。


    3.标准输出流

              "标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入。处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。标准库还定义了另外两个ostream对象,分别命名为cerr和clog。

               cout先缓冲后输出。缓冲区的目的,就是减少刷屏的次数。cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl,不论缓冲区是否满了,都立即输出流中所有数据,然后插入一个换行符

               cerr对象又叫标准错误,通常用来输出警告和错误信息给程序的使用者。cerr不经过缓冲而直接输出,一般用于迅速输出出错信息,是标准错误,默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。一般情况下不被重定向。cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。

              clog对象用于产生程序执行的一般信息。clog流也是标准错误流,作用和cerr一样,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出。


    4.其它

           1.线性表有顺序表和链表两种存储结构。
             顺序表:结点存放地址连续的存储单元。
             链式表:任意的存储单元存放,这组存储单元可连续可不连续。

            2.低位低地址为小端存储,高位低地址为大端存储。

            3.static 修饰变量一共有二种用法

          修饰全局变量,只可以被本文件调用,其它文件不能使用。
          修饰局部变量,在函数内部定义,当函数结束时,static修饰的变量内存不释放。即此时相当于全局变量。包括存在于非main函数的子函数。

           4.'a'-'A'=32

        5.关于C#的构造函数:
              ❶构造函数默认私有,C#中必须显式说明public(这一点不同于Java和C++)。可以带参数或不带。系统能够提供不带参的默认构造函数。但是在显式声明了其它构造函数的时候不会自动提供(类似Java),且在声明了非公有的构造函数的时候也不会。
              ❷构造函数可以私有,存在于只包含静态成员的类中。若一个类只有私有构造函数而无能够运行的公有构造函数,则无法创建实例(嵌套类可以)。
              ❸构造函数可以静态,无参无修饰符,至多运行一次且不可继承。若类中有静态成员,则自动提供静态默认构造函数。且仅当存在能够运行的public实例构造函数(不管有参无参)的时候,该静态构造函数才会运行。此时创建实例的时候,先自动运行静态构造函数,再运行实例对应的构造函数。

                 6.操作链表时,涉及到链表的增删等,由于有可能节点头指针的指向要改变,因此传图头指针参数时,应该使用双重指针或者指针引用。且必须同时检查p和*p是否为空







    参考

       1.C#构造函数

       2.C++中cout和cerr的区别

           

     
  • 相关阅读:
    python运行提示缺少模块 No module named 'XX'
    shell脚本删除redis集群中的key
    pytest运行后生成测试报告
    python初级(302) 7 列表(排序练习)
    解决一个右下角图标闪烁,点击图标就会弹出游戏网页的流氓广告
    python初级(302) 7 列表(二)冒泡排序
    python初级(302) 7 列表
    python初级(302) 6 对象(五)
    生命游戏(python实现,pygame显示图形)
    python初级(302) 6 对象(四)
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393058.html
Copyright © 2011-2022 走看看