练习6.32
int & get ( int * array, int index) { return array[ index] ; }
int main ( ) {
int ia[ 10 ] ;
for ( int i = 0 ; i != 10 ; ++ i) {
get ( ia, i) = i;
}
for ( int i = 0 ; i != 10 ; ++ i) {
cout << ia[ i] << endl;
}
return 0 ;
}
练习6.36
string sarr[ 10 ] = { "a" , "bb" , "cc" } ;
string ( & func ( ) ) [ 10 ] {
return sarr;
}
int main ( ) {
cout << func ( ) [ 0 ] << endl;
return 0 ;
}
练习6.38
int odd[ ] = { 1 , 3 , 5 , 7 , 9 } ;
int even[ ] = { 2 , 4 , 6 , 8 , 10 } ;
decltype ( odd) & func ( int i) {
return ( i % 2 ) ? odd : even;
}
int main ( ) {
cout << func ( 0 ) [ 0 ] << endl;
return 0 ;
}
练习6.53
int calc ( char * a, char * b) ;
int calc ( char * const a, char * const b) ;
练习6.54 6.55 6.56
using pf = int ( * ) ( int , int ) ;
int add ( int a, int b) {
return a+ b;
}
int sub ( int a, int b) {
return a- b;
}
int mul ( int a, int b) {
return a* b;
}
int dis ( int a, int b) {
return a/ b;
}
int main ( ) {
vector< pf> v;
v. push_back ( add) ;
v. push_back ( sub) ;
v. push_back ( mul) ;
v. push_back ( dis) ;
int a = 4 , b = 2 ;
cout << v[ 0 ] ( a, b) << endl;
cout << v[ 1 ] ( a, b) << endl;
cout << v[ 2 ] ( a, b) << endl;
cout << v[ 3 ] ( a, b) << endl;
return 0 ;
}