- favicon.ico Generator
- Ferry Halim
- interfaceLIFT
- 클리앙
- 쿨엔조이
- 플레이웨어즈
- 윈도우포럼
- 보드나라
- i-funbox
- firefox
- chris jordan
- 매니캠
- 웹캠
- 아이팟mp3뽑기
- star cd key
- kbs포토뱅크
- Vimeo
- 4shared
- snoopybox
- 인터넷라디오
- RaySoda
- 더어플 :: 내 손안에 작은세상
- love:paradox
- 룩포박스
- 월간잉여
- 디지의 수상한 공작소
- 일본
- SLRCLUB
- 차도녀의 싱글라이프
- Serepim의 코믹 스페이스
- Freemake
- NBA Mania
- 게티이미지뱅크
- 알바정리
- 팝코넷
- 기글하드웨어
- cj더키친
- Fantastic Typoon
- 한국관광공사
- 3uTools
- 브릭캠퍼스
- 다인의 편의점 이것저것
- foobar2000
- Wallpaper
- simplehuman
- 퀘이사존
- SoundCloud
- 예판넷
- 올파츠
- 퀘이사존
- 비플릭스
- 엔공구
- 마베르만
- 오토브라이트 다이렉트
- 토에이 온라인 스토어
- Road Trail Run
- Apple System Status
- 쿼라
- 슈프라이즈 - 스니커즈 발매정보
- 풋셀 커뮤니티
- 럭키드로우
- 통관알리미
- Tears of the Kingdom MAP
- Tears of the Kingdom MAP 2
- SWITCH WORLD
- dprime
- 데일리슬슬
- 핫썰
- 핫딜
- 번코 - 세상의 모든 자막
- 에펨코리아
- MY FREE MP3
- 영s의 브런치스토리
- 메타크리틱
- 오픈크리틱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 개봉기
- 존프루시안테
- 키스플린트
- 펜타포트
- 스타크래프트2
- 율량
- 살라
- 윤종신
- 비보이
- 김사랑
- 섬머소닉
- 지산락페
- 티스토리 초대장
- 밸리록
- 섬머소닉 2차
- 윈도우7
- 정보처리산업기사
- U2내한공연
- 티스토리초대
- V60 CC
- 마재윤
- 진중권 블로그 100분토론 디워
- V60 크로스커트리
- DDT4ALL
- 티스토리 초대장/ 티스토리초대
- 행보
- UK B-Boy Championships
- 키스 플린트
- 청주
- u2
- Today
- Total
알고리즘
포인터 본문
포인터는 처음 들어갈 때 아주 중요합니다. 구조에 대한 정확한 이해가 있어야 파일 입출력에 가서도 헷갈리지 않아요.
int a[3][2]= { {1,2},{3,4},{5,6}};
기본적으로 C에서의 배열은 행과 열로 이루어진 것이 아니라 하나의 선 위에 위치해 있다는 표현이 좋겠네요.(그림을 그려가면서 설명하면 좋은데 조금 아쉽네요.)
교수에 따라 처음에 문제를 빠르게 이해시키려고 행과 열로 설명하는 교수도 있는데 그건 잘못된 교육이라고 생각합니다. 그런 사람들이 하는 것은
a라는 배열 안에
12
34
56
이렇게 자료가 들어가 있다는 말인데 C에서는 그런 식으로 자료가 들어가지 않습니다.
int a[3][2]= { {1,2},{3,4},{5,6}};
이 선언문을 예로 들면
int a[3][2]에서 일단 a라는 이름을 가진 int형 공간을 2*3개만큼 만들어 줍니다.
배열은 가장 뒷자리 부터 생각하셔야 합니다.
"int형을 가진 2개의 자료가 3개 모여서 a라는 배열을 이룬다."
{ {1,2},{3,4},{5,6}};는 자료를 넣어주는 거죠
1은 a[0][0], 2는 a[0][1]의 자리에 들어갑니다. (배열의 자리가 0부터 시작하는 건 아시죠?)
이 둘을 a[0]으로 표현할수 있습니다. *a[0]을 하면 1과 2가 나오죠.
마찬가지로
a[1][0] = 3, a[1][1] = 4, a[2][0] = 5, a[2][1] = 6
이렇게 들어갑니다.
또한 a[3][3] 이렇게 고쳐 보니
*(ptr+0)=1
*(ptr+1)=2
*(ptr+2)=0
*(ptr+3)=3
*(ptr+4)=4
*(ptr+5)=0
이렇게 나오는 이유는
int a[3][3]은 "int형을 가진 3개의 자료가 3개 모인 배열a"
이렇게 되죠.
그리고 초기값을 지정해 줄때
{ {1,2},{3,4},{5,6}};이렇게만 넣어줬기 때문에
3번째 자리 즉, a[0][2], a[1][2], a[2][2]의 자리에 아무런 값이 들어가지 않았다는 말입니다.
값을 지정해주지 않고 프린트문을 넣을 경우 프로그램에 따라 쓰레기값이 나올수도 있습니다.
지금 배열에는 1,2,??,3,4,??,5,6,??
이렇게 들어가 있죠. 그리고 앞에서 부터 3개씩 끊어 배열에 넣습니다.
a[0][0]부터시작해서 1을 넣고 뒷자리를 늘려주죠
a[0][1]에 2를 넣고 a[0][2]에 초기화되지 않은 값을 넣고,
이제 뒷자리가 3개 다 입력되었으니 다시 앞의 자리를 늘려주고(a[1][0])
다시 자료를 대입하는 식이죠.
*******
만약 { {1,2},{3,4},{5,6}};이 식이 { 1,2,3,4,5,6};이런 식으로 중괄호 없이 넣어줬다면
a[0][0] = 1
a[0][1] = 2
a[0][2] = 3
a[1][0] = 4
a[1][1] = 5
a[1][2] = 6
a[2][0] = 비초기화
a[2][1] = 비초기화
a[2][2] = 비초기화
이렇게 대입됩니다. 가능하면 중괄호를 넣어주는 습관을 기르시는 게 좋겠네요.
'study > programming' 카테고리의 다른 글
소수구하기,이분검색 (0) | 2007.12.09 |
---|---|
정렬하기 (포인터함수) (0) | 2007.12.09 |
포인터 (0) | 2007.12.07 |
포인터 (0) | 2007.12.04 |
불 대수의 법칙.. (0) | 2007.11.26 |