티스토리 뷰

위 코드에서 1번째 printf는 E의 주소를 출력한다.

그 아래의 &s[0]~[4]는 E M M A에 해당하는 주소값을 출력한다.

#include <stdio.h>

int main(void)
{
    char *s = "EMMA";
    printf("%p\n", s);
    printf("%p\n", &s[0])
    printf("%p\n", &s[1]);
    printf("%p\n", &s[2]);
    printf("%p\n", &s[3]);
}

 

아래 코드는 주소에 해당하는 문자, 즉 EMMA가 출력된다.

문자가 연속되어 저장되어 있기 때문에 주소값을 1씩 증가해서 출력할 수 있다.

printf("%c\n", *s);
printf("%c\n", *(s+1));
printf("%c\n", *(s+2));
printf("%c\n", *(s+3));

 

문자열을 비교할 때 두 변수를 바로 비교하게 되면

각각의 저장된 메모리 주소가 다르기 때문에 항상 다르다고 나올 것이다.

 

 

 

 

 

출처: www.boostcourse.org/cs112

'부스트코스 > 5. 메모리' 카테고리의 다른 글

[CS50] 5.6 메모리 할당과 해제  (0) 2021.02.06
[CS50] 5.5 문자열 복사  (0) 2021.02.05
[CS50] 5.3 문자열  (0) 2021.02.05
[CS50] 5.2 포인터  (0) 2021.02.04
[CS50] 5.1 메모리 주소  (0) 2021.02.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함