2.7 문자열

char cText1='A' 는 캐릭터형으로(1바이트) 'A'에 해당하는 아스키 코드가 저장된다.
cText1='A' 의=(대입연산자)의 왼쪽은 메모리 이다. 예를 들어 'A'의 위치가 1000번지의 주소값을 가진다 라고 하면 1000번지에 'A' -아스키코드 67이 저장된다는 말이다.

심볼 테이블(Symbol table)

Type(형) Name(이름) Address(주소)
char cText1 1000
char cText2 999
char[] - []는 배열 cText 989

989번지 [0] - char cText[10];//배열이며 제일빠른 수가 심볼테이블에서 주소로 온다
990 [1]
991 [2]
992 [3]
993 [4]
994 [5]
995 [6]
996 [7]
997 [8]
998 [9] [0]-[9]까지로 색인(index)라고 한다.
999
1000번지


char cText[10]; 은 캐릭터형으로 [숫자] 만큼 만들 라는 말이며 []가 있는 것을 배열(Array)어레이 라고 한다. 998-989번지라고 하면 표시는 제일 처음의 989번지를 적는다.

cText[0]='A' 는 cText의 [0]번째 자리인 989번지에 A를 아스키 코드 로 저장 하라는 말이며 989번지에 아스키코드 65가 저장된다.

int A[10]; 인트가 4바이트 이므로 총 40 바이트가 된다.
short A[3]; 쇼트가 2바이트 이므로 총 6바이트가 된다.

문자배열 : 1바이트
cText[0]=65; == cText[0]='A'
cText='A'; 에러 가 난다. 바르게 고치면 cText[0]='A' 로 해야한다.

A B C D E F G H Z Y
-->문자배열(문자 하나를 저장)


0(NULL)
-->문자열 : 문자열 에서는 항상 맨 마지막이 NULL(0)=>\0 로 끝이난다.
위그림에서 cText[9]=0; 의 효과와 같다. -마지막 주소여기는[9]에 0을 넣어줘야 문자열이다.

printf("happy");
안보이지만 happy\0 로 되어있다.

printf와 scanf

printf("%d\n,cText1);
는 ,뒤의 cText1을 앞의 %d에 넣는다는 것이고

scanf("%s",&W);
는 %s 스트링을 받아서 뒤의 W로 넣어준다는 것이다.(메모리로)
scanf("%s",&W); 의 &는 앤퍼샌트 라고 하며 주소연산자로 쓴다.