한 줄 요약 :
char타입의 문자열을 입력받고 포인터를 활용해 문자열의 위치를 표현한다.
풀이순서
1. char word[1001]; // 문자열 입력받기
*주의 : 문제에 나온 단어의 길이는 최대 1000이지만 문자열의 크기를 1001로 변경해준다. char 타입의 문자열은 문자열의 끝을 '\0'을 통해 인지한다. 따라서 배열의 크기를 (문자열의 길이 + 1)로 설정해준다.
2. int i; // 정수 i 입력 받기
배열의 몇번째 문자를 알고싶은지를 나타낸다.
3. char* ptr = word; // 문자열 word의 주소값 받기
포인터 변수를 활용해 문자열 변수 word의 메모리 주소값을 저장한다. char* ptr = word;의 의미 : - 이름이 ptr인 포인터변수('*')를 선언한다. - 이 변수는 word라는 다른 변수의 메모리 주소값을 가리키고있다. - 변수 word는 char타입으로 표현되어있을 것이다. (실제로 word가 어떤 타입이든간에 포인터는 앞에 붙여진 타입대로 변수를 읽을 것이다.)
4. ptr[i-1]; // 알고싶은 문자 나타내기
문자열 word는 배열형태이므로 ptr[i-1] 형태를 통해 원하는 위치의 문자를 표현한다. 이 때 [i-1]인 이유는 배열의 시작은 1이 아닌 0부터이기 때문이다.
<C++ code>
#include <iostream>
using namespace std;
int main()
{
char word[1000];
cin >> word;
int i;
cin >> i;
char* ptr = word;
cout << ptr[i-1] << endl;
}