函数有关知识
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的指针: 形如 int a = 5; int b = 6;
const int *ptr = &a;
*ptr = 8; //禁止修改ptr指向的值
ptr = &b; //ptr可以指向另一个变量
const 指针 : 形如 int a = 5; int b = 6;
int * const ptr = &a;
*ptr = 8; //ptr可以用来修改值
ptr = &b; //禁止改变ptr指向的变量
包含多个递归调用的递归,例:ruler.cpp
#include <iostream>
const int Len = 66 ;
const int Divs = 6;
void subdivide(char ar[],int low,int high,int level);
int main()
{
char ruler[Len];
int i ;
for(i = 1;i < Len-2; i++)
ruler[i] = ' ';
ruler[Len - 1] = '\0';
int max = Len - 2;
int min = 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(int j = 1;j<Len - 2;j++ )
ruler[j] = ' ';//reset to blank ruler
}
getchar();
return 0;
}
void subdivide(char ar[], int low,int high, int level)
{
if(level == 0)
return;
int mid = (high + low)/2;
ar[mid] = '|';
subdivide(ar,low,mid,level - 1);
subdivide(ar,mid,high,level - 1);
}