2010-06-06 29 views
0
#include <iostream> 
using std::cout; 
using std::cin; 
using std::endl; 

#include <cstring> 

void initialize(char[],int*); 
void input(const char[] ,int&); 
void print (const char*,const int); 
void growOlder (const char [], int*); 

bool comparePeople(const char* ,const int*,const char*,const int*); 

int main(){ 

    char name1[25]; 
    char name2[25]; 
    int age1; 
    int age2; 


initialize (name1,&age1); 
initialize (name2,&age2); 

print(name1,age1); 
print(name2,age2); 

input(name1,age1); 
input(name2,age2); 

print(name1,age1); 
print(name2,age2); 

growOlder(name2,&age2); 

if(comparePeople(name1,&age1,name2,&age2)) 
    cout<<"Both People have the same name and age "<<endl; 
return 0; 
} 

void input(const char name[],int &age) 
{ 
cout<<"Enter a name :"; 
cin>>name ; 

cout<<"Enter an age:"; 
cin>>age; 
cout<<endl; 
} 

void initialize (char name[],int *age) 
{ 
name[0]='\0'; 
*age=0; } 
void print (const char name[],const int age) 
{ 
cout<<"The Value stored in variable name is :" 
    <<name<<endl 
    <<"The Value stored in variable age is :" 
    <<age<<endl<<endl; 
} 

void growOlder(const char name[],int *age) 
{ 
cout<< name <<" has grown one year older\n\n"; 
*age++; 
} 
bool comparePeople (const char *name1,const int *age1, 
    const char *name2,const int *age2) 
{ 

return(*age1==*age2 && !strcmp(name1,name2)); 

} 

回答

7

input()功能的name參數是指向const char右手操作。 const意味着你不能修改它,所以如果你需要修改它,它不需要是const。

這就是說,到真的修復它,用std::string無論你目前使用char[] S和char* S和考慮返回的對象,而不是使用輸出參數;這會使你的代碼更容易出錯,並且更易於理解和理解。

0

符號'>>'是一個運算符。 String類的作者包含了這個運算符,它只接受原始類型,當然還有String類的類型。

你有兩個選擇:

  1. char數組轉換爲字符串
  2. 超載的「>>」操作者採取字符數組和輸出它,只要你喜歡

查找如果你真的想獲得樂趣,可以重載運營商。

相關問題