函数有关知识
函数有关知识
cin.get()与cin的区别:cin.get()函数读取所有的输入字符,包括空格和换行符,而cin>>跳过空格和换行符。当用户对程序提示做出响应时,必须在每行的最后按Enter键,以生成换行符。cin>>ch方法可以轻松地跳过这些换行符,但当输入的下一个字符,cin.get()将读取后面的换行符。
指针和const两种不同的方式将const关键字用于指针
第一种方法是让指针向一个常量对象,这样可以防止使用该指针来修改所指的值。
第二种方法是将指针本身声明为常量,这样可以防止改变指针指向的位置。
const数据或非const数据的地址给指向const的指针,但只能将非const数据的地址赋给非const指针。
尽可能使用const:
将指针参数声明为指向常量数据的指针有两条理由:
1、这样可以避免由于无意间修改数据而导致的编程错误。
2、使用const使得函数能够处理const和非const实参,否则将只能接受非const数据。
const指针
指向const的指针: 形如 inta=5;intb=6;
constint*ptr=&a;
*ptr=8;//禁止修改ptr指向的值
ptr=&b;//ptr可以指向另一个变量
const指针: 形如 inta=5;intb=6;
int*constptr=&a;
*ptr=8;//ptr可以用来修改值
ptr=&b;//禁止改变ptr指向的变量
包含多个递归调用的递归,例:ruler.cpp
#include<iostream>
constintLen=66;
constintDivs=6;
voidsubdivide(charar[],intlow,inthigh,intlevel);
intmain()
{
charruler[Len];
inti;
for(i=1;i<Len-2;i++)
ruler[i]='';
ruler[Len-1]='\0';
intmax=Len-2;
intmin=0;
ruler[min]=ruler[max]='|';
std::cout<<ruler<<std::endl;
for(i=1;i<=Divs;i++)
{
subdivide(ruler,min,max,i);
std::cout<<ruler<<std::endl;
for(intj=1;j<Len-2;j++)
ruler[j]='';//resettoblankruler
}
getchar();
return0;
}
voidsubdivide(charar[],intlow,inthigh,intlevel)
{
if(level==0)
return;
intmid=(high+low)/2;
ar[mid]='|';
subdivide(ar,low,mid,level-1);
subdivide(ar,mid,high,level-1);
}