반응형
예제를 풀다가 atoi함수 안에 배열이 있는게 아니라 주소값이 들어가 있는걸 발견했습니다.
책에는 주소값 얘기는 없고 분명 문자배열이 숫자로 구성되어 있다면 이걸 인티저로 바꾸는 함수라는 설명 밖에 없었는데 갑자기 주소값??
그래서 제가 실험해봤습니다.
- 배열 중간 주소값을 atoi에 할당
2. 배열 중간에 \n와 \0를 삽입하여 어디까지 출력되는지 보기
결과는 항상 같았습니다.
그러니까 책에 나오는 int i = atoi(str); 는 str 자체가 배열의 시작주소값을 의미하기에 배열의 시작부터 끝까지를 인티저로 바꾼다는 뜻이었고
int i = atoi(&str[2]); 라는 코드가 있다면 이건 str[2]부터 str배열의 끝까지를 인티저로 바꾼다는 뜻이었습니다.
그리고 문자열을 인식하는 기준은 \n 와 \0이겠지요.
+++
재밌는 사실 문자는 \n와 \0와 같이 기능함을 발견했습니다.
a를 무시하고 345가 출력될 줄 알았는데 3만 출력되었습니다.
++++혹시나 예외가 있을까봐 해봤는데 시작주소 값 전에 \n,\0, 문자가 있으면 atoi는 이를 무시하고 3456을 출력했습니다.
반응형
'개발 공부 > C언어' 카테고리의 다른 글
#23 '열혈 C 프로그래밍'에 대한 소회 (0) | 2022.08.08 |
---|---|
#21 C언어 그냥 써보는 잡담... 변수이름에 comp라는 단어가 들어가는데 이건 무슨 뜻일까 (0) | 2022.08.07 |
[실험] #20 C언어 fgets gets scanf의 차이를 확실하게 알아보자 \0\n의 차이점도 같이 알아보자 (0) | 2022.08.07 |
[실험] #19 C언어 strncpy, strncat와 \0, \n 대체 어디부터 어디까지 복사하는거야! (0) | 2022.08.07 |
#18 [열혈 C 프로그래밍] 도전! 프로그래밍3 - 1번, 2번, 3번, 4번, 5번, 6번 코드와 해설 (0) | 2022.08.04 |
댓글