• cpp(第四章)


    1.索引比数组长度少1;

    2.c++中不能数组赋给另一个数组;只能定义时才能使用初始化;

    3.c++11中{}内为空,默认赋值为0,而c++中{}如果只对部分初始化,其他部分将被设置为0;c++11使用{}不能把大类型转化小类型(缩窄转化)

    for example float change int;

    4.字符串和字符常量,字符常量是字符串编码简写表示,在ascii系统上,如‘S’只是83的另一种写法,而字符串它表示的是N个字符和‘’组成的字符串,更糟糕的是

    “XXX”实际是上表示的是字符串所在的内存地址。

    5.strlen()只计算可见的字符,而不把空字符计算在内。

    6.cin使用空白(空格,制表符和换行符)来确定字符串的结束位置。(string)

    7.cin.getline()和cin.get(),输入的时候getline会将随后的换行符丢弃,而get将换行符保留在输入序列中(缓存中);在参数中读取的字符个数,函数实际读取

    少1,因为需要在结尾处添加空字符;老式实现中没有getline(),get()使输入更仔细,for example 假设用get()将一行读入数组中,如何知道停止读取的

    原因是由于已经读取了整行,而不是由于数组已经填满呢?查看下一个输入符,如果是换行符,说明已经读取整行,否则该行中还有其他输入;get()在读取到空

    行后将设置失效位(failbit),这意味着接下来的输入将被阻断,可以用cin.clear()清除状态,但空行符还是在缓冲中,需要get(void)吃掉,而getline()在输入

    字符串比分配空间长时,会设置失效位,并关闭后面的输入。

    8.string类 对象赋值给另一个string对象,被赋值对象的字符串指针指向赋值对象字符串;符字符串常量则重新动态分配空间。(引用计数)

    9.使用strcat()函数时要注意接收方所能接收数组的最大数组长度,超过将覆盖相邻的内存(可能导致程序终止,也可能程序继续运行但数据被损坏)。

    10.sizeof:The sizeof operator shall not be applied to an expression that has function type or anincomplete type, to the parenthesized

    name of such a type, or to an expression thatdesignates a bit-field member。

    sizeof为运算符,不能用于函数,既可以在编译期间确定值也可以在运行期间确定值。

    11.指针创建时不会自动初始化为nullptr,它的缺省值是随机的,胡乱指向。因此当指针创建时应被初始化或者置为nullptr。

    12.指针变量被释放后还是指向原来的位置,只是所指向的内存已经被释放不能使用(野指针),应置为nullptr,防止错误操作。

    13.指针和数组区别之一是,可以修改指针的值(++||——)而数组名是常量,另一个区别是sizeof(数组)得到的 是数组的长度,而sizeof(指针)得到的是

    保持指针地址数据类型大小。

    14.数组的地址short tell_short[10];cout<<tell<<endl<<&tell;数组名被解释为其第一个元素的地址而对数组名用&(取地址符号)是得到的是整个数组的地址,

    tell+1 将地址值加上2而&tell+1将地址值加20.

    15.cout,如果给cout提供一个字符的地址,则它将从该字符开始打印,直到遇到空字符为止。cout会自动跟踪类型,char变量只会输出一个字符,而字符串则会

    直到遇到空字符为止。

    16.整型指针,浮点型指针,cout<<指针,输出地址。cout<<*指针,输出变量值;字符型指针,cout<<指针,输出字符,cout<<(int*)指针,输出地址。

    16.1一般来说,如果给cout提供一个指针,它将打印地址,但如果指针的类型为char*则cout将显示指向的字符串。如果要显示的是字符串的地址则必须将这种

    指针强制转换为另一种指针的类型,如果int*。

    17.strcpy(目标地址,要复制的字符串地址),目标内存小于字符串则剩余的部分复制到数组后面的内存字节中,这可能会覆盖程序正在使用的其他内存。

    18.strncpy(目标地址,要复制的字符串地址,要复制的最大字符数),如果该函数在到达字符串结尾之前,目标的内存已经用完,则它不会添加空字符。

    19.cin.getline(char*,int) AND cin.get(char*,int) 只读取到n-1位字符,最后一位补空白符

     
  • 相关阅读:
    ThreadLocal
    线程基础知识09JAVA的可见性和有序性问题
    SpringIOCDebug查看Bean的实例化过程
    SpringAOP(Debug查看执行流程)
    JAVA引用类型
    线程基础知识CountDownLatch
    从A至Z,用30个单词来概括过去十年的游戏行业
    蓝桥杯练习系统 ID: 81 冒泡排序计数
    蓝桥杯练习系统 ID: 279 3000米排名预测
    [多重解法]线段树练习(动态求连续区间和,区间最大值)
  • 原文地址:https://www.cnblogs.com/Call-C/p/5470964.html
Copyright © 2020-2023  润新知