sadxp   5년 전

포인터 배열을 배우고있는데여, 주소에대해 궁금한점이 있어 질문을 올립니다.

예를들어,

const char aa[3] = {"SDD","EEW","AAA"};

이렇게 있다고 가정하고,

&aa[0] = 0x00001 이라고 가정하면여,

aa[0]에는 SDD\0 이렇게 4개의 값이 있으니까 주소는 0x00001~0x00004 까지 사용하는거 아닌가여?

그런데 그다음이,

&aa[1] = 0x00006 으로 나와서여,

0x00004까지 사용하고나서, 왜 0x00005부터 &aa[1]이 시작하지 않는지 궁금합니다.

srand   5년 전

우선, 


const char aa[3] = {"SDD","EEW","AAA"};

여기에서 char 형 배열 3개를 선언했는데 char *형 3개가 들어가 있어서 문법 오류가 날테고요

const char *aa[3] = { "sdd", "eew", "aaa"}; 

으로 수정하신다면, 

&(aa[0]) 과 &(aa[1]), &(aa[2]) 의 차이들은, 

포인터 변수이기 때문에 64bit OS 에서는 8byte 씩 차이가 날테고요, 

글쓴분과 같은 상황을 만들자면, 

const char aa[3][5]={ "sdd", "eew", "aaa" } ;

처럼 aa[0] 은 char [5] 만큼 각 5개 공간을 만들어야 5씩 차이가 날 것입니다.

댓글을 작성하려면 로그인해야 합니다.