반응형
C 에서 char 은 문자 타입이 아니라 크기가 1바이트인 정수 타입이다.
다른 언어와 달리 C 는 문자라는 개념을 언어 차원에서 거의 갖고 있지 않다. 그냥 숫자를 담아두고, 출력할 때 ASCII 표를 보고 글자 모양으로 그려준다.
배열을 주는 쪽
char str[256];
balanced(str);
배열을 받는 쪽
배열 이름을 표현식에서 쓰면, "첫 원소의 주소" 로 변환된다. 예외는 sizeof(str), &str. 이 두 경우만 배열 그 자체로 남는다.
int balanced(char *expression){ // &str[0]이 전달된다.
expression[1];
*(expression + 1);
char *p = expression + 1;
while (*expression != '\0') {
expression++;
}
}
배열의 첫 번째 값이 전달되어도, 배열은 연속된 메모리 주소를 차지하고 있기 때문에 다음 칸의 배열에 접근할 수 있다.
배열의 +1
위의 표현식을 보면 배열 주소에 +1 한 것을 알 수 있다.
*(expression + 1);
1. expression + 1; : +1 만큼 주소값 이동
2. *() : 내부의 주소의 값에 접근
배열
C 에서의 배열은 int, char 타입이 있다.
int arr[4]
char arr[4]
int 는 보통 4바이트로, 메모리 주소를 4 바이트 차지한다. char 은 보통 1 바이트로, 메모리 주소를 1 바이트 차지한다. +1 했을 때 시스템은 타입을 보고 +1 을 할지, +4 를 할지 정한다.
반응형