c언어
20140325 - 배열, 문자열배열, 포인터와 배열
Owen.K
2014. 3. 25. 17:46
배열 - 배열을 arr[3]으로 선언을 하고 값을 넣어도 값은 들어감. 할당되지 않은
메모리 공간을 침범하게 되는데 반응은 상황에 따라 틀림.
일반 변수와 틀리기 때문에 선언되면 주소가 된다.
int arr[3]
arr[0]=1 |
arr[1]=2 |
arr[2]=3 |
arr[3]=4 할당되지 않은 메모리 공간. |
arr[4]=5 할당되지 않은 메모리 공간. |
배열이름을 sizeof로 넣으면 연산결과로는 ‘바이트 단위의 배열크기’가 반환된다.
(예시1)
(예시2)
(예시3)
문자열
char str[] = "Good morning!(null)"; 따옴표로 하면 끝자리 (null) 14byte초기화됨.
원래 13byte
str[0]='G' - G에 대한 아스키코드가 나옴.
str 자체는 주소이다.
%s - 하나하나의 문자의 아스키코드 값을 가져와서 문자열로 찍어냄.
간에 null이 찍히면 종료로 인식 되서 끊기게 된다.
심볼 |
||
char[] |
str(주소)=12FF64 |
12FF64 |
char *(주소) |
||
char * |
심볼 |
||
char[] |
str(주소)=12FF64 |
12FF64 |
char *(주소) |
cp1 |
|
char * |
cp2 |
str[0] |
str[1] |
str[2] |
str[3] |
str[4] |
str[5] |
str[6] |
str[7] |
str[8] |
str[9] |
str[10] |
str[11] |
str[12] |
str[13] |
G |
o |
o |
d |
|
m |
o |
r |
n |
i |
n |
g |
! |
null |
(예시1)
(예시2)
포인터와 배열의 관계
1차원 배열이름의 포인터 형은 배열의 이름이 가리키는 대상을 기분으로 결정.
(예시1)
(예시2)
(예시3)
(예시4)
(예시5)
(예시6)