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)