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

函数有关知识

2013年09月10日 ⁄ 综合 ⁄ 共 1335字 ⁄ 字号 评论关闭

函数有关知识

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

}

抱歉!评论已关闭.