로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

모두를 위한 컴퓨터 과학 (CS50 2019)

임시 이미지 David J. Malan (데이비드 J. 말란)
http://www.boostcourse.org/cs112/forum/130642
좋아요 15515 수강생 34442

안녕하세요!


아래의 코드처럼 

일반 변수(int, char등)의 포인터는 값(ex. *cp)과 주소값(ex. cp)을 다르게 표현하는데,

char 배열(=string)의 포인터는 값(ex. sp)과 주소값(ex. sp)를 같게 표현하는 이유가 궁금합니다!


*sp로 쓰면 0번째 char의 값을 의미해서 안쓰는 건지..

string은 값도 되면서 동시에 char 배열의 첫번째 원소의 주소가 되는걸로 이해하면 되는건지..

같게 표현해도 혼란이 없는건지.. 궁금합니다!

#include <stdio.h>
#include <cs50.h>

int main(void){
    char c='E';
    char* cp=&c;
    printf("%c\n",*cp); //E
    printf("%p\n",cp); //0x ...

    string s="EMMA";
    char* sp=s;
    printf("%s\n",sp); //EMMA
    //printf("%s\n",*sp); //이게 아닌 이유
    //printf("%c\n",*sp); //E
    printf("%p\n",sp); //0x ...
}