函数有关知识

函数有关知识

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);

}

函数有关知识