本周学习总结2021.1.24
数组和字符串长度的获取
数组的长度使用sizeof()函数方法获取。
字符串长度使用strlen()函数方法获取。
sizeof()函数使用注意事项
在主函数中使用sizeof()函数可以得到一个数组的长度,但是在其他函数中时,如果要求的这个数组不是在此函数中定义的,而是在主函数中定义,通过传入到此函数中的sizeof()函数就不能得到数组的长度了,因为在主函数中sizeof(a)其中的a代表的是一个数组(此时假设有一个数组为a[]),但是传入其他函数中时,是将a[]数组的起始地址传入的,所以在其他函数中a就只能代表a[0]的地址,这时使用sizeof()就只能得到a[0]这个数的长度,为4个字节。
引用函数时传入数组的方法
void a(int a[])
void a(int *a)
这两种写法的本质都是相同的,都是向函数传入数组的起始地址
屏蔽空格
while ( (ch = getchar()) == ' ')
;
这个语句的意识是如果输入的是空格将不进行任何操作,及起到屏蔽空格的作用。
cin>>i;
while(cin.peek() == ' ')
{
cin.get();
}
这个也能屏蔽空格
个人粗糙理解是cin.peek()返回的是缓冲流中的第一个数,cin.get()是将cin流中的第一个数清除提取出来。peek指针位置不变,get指针向后推一位。(一般根在cin>>i后使用)
上面代码,如果在要给i输入时,不想输入空格,但是防止空格输入到i中就可以用如上代码,peek()可以判断输入的是不是空格,如果是空格get()可以将空格提取出来。
如果abcd在cin流中,返回的都是a
cin
cin.getline(a,10);
这个方法只能把输入字符的前9个字符传给a,因为第10个字符只能放0。
cin.ignore(a,10);
这个方法是忽略输入字符的前10个字符。