// @topic S-0314-11-01-10 C++ iterator design pattern I // @brief C++ pointer is an iterator #include <iostream> void pause() { std::cout << "Enter x to exit: "; char ch; std::cin >> ch; } void print( char message[] ) { std::cout << "In print: sizeof message is " << sizeof( message ) << '\n'; // stop when NULL char is found // use index syntax to access characters int idx = 0; for ( ; message[ idx ] != '\0'; ++idx ) { std::cout << message[ idx ]; } std::cout << '\n'; } void print( char* message, int length ) { std::cout << "In print2: sizeof message is " << sizeof( message ) << '\n'; // print all chars for given length // use pointer syntax to access characters while ( length-- ) { std::cout << *message++; } // childish version: while ( length != 0 ) { --length; std::cout << *message; ++message; } std::cout << '\n'; } void print( char* from, char* to ) { // print all chars in given range // use pointer syntax to access characters while ( from < to ) { std::cout << *from++; } std::cout << '\n'; } int main() { //char message[] = { 'H', 'e', 'l', 'l', 'o', '\0' }; char message[] = "Hello"; // 012345 std::cout << "In main: sizeof message is " << sizeof( message ) << '\n'; //print( message ); //print( message, strlen( message ) ); print( message, message + sizeof( message ) ); print( message, &message[ 5 ] ); pause(); return 0; } /* If ptr is a pointer, then: 1). *ptr pointer dereference: provides access to the element in memory 2). ptr[0] subscript operator: does EXACTLY the same thing */