예제를 풀다가 atoi함수 안에 배열이 있는게 아니라 주소값이 들어가 있는걸 발견했다. 책에는 주소값 얘기는 없고 분명 문자배열이 숫자로 구성되어 있다면 이걸 인티저로 바꾸는 함수라는 설명 밖에 없었다.
그래서 내가 실험해봤다. 배열 중간 주소값을 atoi에 할당 2.
배열 중간에 \n와 \0 삽입하여 어디까지 출력되는지 보기 결과는 로 항상 같았다. 그러니까 책에 나오는 int i = atoi(str); 는 str 자체가 배열의 시작주소값을 의미하기에 배열의 시작부터 끝까지를 인티저로 바꾼다는 뜻이었고 int i = atoi(&str[2]); 라는 코드가 있다면 이건 str[2]부터 str배열의 끝까지를 인티저로 바꾼다는 뜻이다. +++ 재밌는 사실 문자는 \n와 \0와 같이 기능한다. 345가 출력되어야 하는데 3만 출력되었다.
++++혹시나 예외가 있을까봐 해봤는데 시작주소 값 전에 \n,\0, 문자가 있으면 atoi는 이를 무시하고 3456을 출력했다....
원문 링크 : #31 C언어 atoi함수를 &이랑 같이 쓰는 법 실험