现在的位置: 首页 > 综合 > 正文

C++ primer学习笔记(5)

2014年09月05日 ⁄ 综合 ⁄ 共 1151字 ⁄ 字号 评论关闭

1、只是声明数组但是不初始化,数组内都是一些不确定的值

2、把数组全部的元素都初始化为0有两种办法

memset(a,0,sizeof(a))  //意思是说,用memset函数把数组在内存这段空间的每个字节都变为0

int a[90]={0}        //显示的将第一个元素赋值为0,那么其余的元素也都会被变为0。也就是说,如果声明的时候初始化的第一个元素,那么其余的元素都会被赋值为0.而且只有在定义一个数组的时候才能使用初始化,其他的时候不能再使用花括号赋值,并且不能数组赋值给数组


3、short a[] = {1,2,3,4,5}

如果想求出这个数组的大小,但是又不想数元素个数的时候可以用sizeof a / sizeof(short)


4、数组的初始化不是运算,在类型不同的时候可以自动的向上转化,不允许在初始化的时候为数组赋值不同类型的数据,必须和数组定义时候的类型相同才行


5、字符串是存储在字符数组中的,但是一个字符数组如果初始化了每个字符,必须要把最后一个字符设置为空字符时,这个字符数组才能代表的是一个字符串,然而,如果使用双引号将字符串引起,再初始化数组,那么就不用再特意加上空字符,引号括起的字符串叫做字符串常量,是隐式的加了空字符了。并且再用字符串常量初始化字符数组的时候,除了前面的一些有效字符之外,其余的都会被初始化为空字符


6、字符常量与字符串常量不同

字符常量是只是字符串编码的简写表示,在ASC系统中,‘s’只是83的另一种写法,在赋值的时候实际上是把83赋值给了一个字符型变量,因为字符型常量只有一个字节,在内存中存储数据的时候是不分类型的,只要这个类型的宽度可以存下这个数据,那么就可以存,类型只是认为规定的一个范围,定义这个范围内表示的是什么,所以,如果一个整数在内存中存储的宽度不超过1个字节,也就是八位的大小,那么完全可以存储在字符型的变量中。


而字符串常量"s"表示的是两个字符,一个s,一个空字符。并且"s"实际上表示的是s这个字符串,在内存中连续地址中的首地址,所以再把一个字符串型常量赋值给一个字符型变量的时候,实际上是把这个字符串的地址赋值给了这个变量。


7、C++中也如python一样,支持字符串的自动连接,只需把两个字符串相邻的写在一起,那么前一个字符串的空字符就会被后一个字符串的第一个字符串取代,然后连接成一个新的字符串。

8、sizeof求出整个字符数组的长度,strlen()求出数组中存的字符串的长度。


9、cin类里面的get 和getline方法会获取整整一行的输入,不会因为中间有空白符而隔断输入,这两个函数都会把换行符作为输入的结束标志,并且get会把换行符留在输入队列,以至于下面再有输入的时候读取的是换行符,而getline不会把换行符留在输入队列,会删除它。






抱歉!评论已关闭.