자료형에 관한 질문
참
질문 제목 : 자료형에 관한질문 포인터나 배열에 따라서 할당받는 크기(자료형)이 궁금합니다!
질문 내용 :오른쪽 주석이 출력되는 결과값에 대한 질의입니다.4,9,10번이 이해가 안갑니다.
void main(void)
{
char *a;
char b[10];
char *c[10];
char (*d)[10];
printf(1번:%d\n,sizeof(a)); //a는 char pointer형이므로 주소형을 가진다 4바이트
printf(2번:%d\n,sizeof(*a)); //a가 가리키는것은 char가 되므로 1바이트
printf(3번:%d\n,sizeof(b)); //b는 10개의 요소를 가지므로 10*sizeof(char) = 10
printf(4번:%d\n,sizeof(3[b])); // ?????????????????왜 1 ?
printf(5번:%d\n,sizeof(c)); //주소형을 10개를 가르키므로 40
printf(6번:%d\n,sizeof(c[0])); //주소형하나 이므로 4
printf(7번:%d\n,sizeof(*c[1])); //char형 하나이므로 1
printf(8번:%d\n,sizeof(d)); //char형 poninter이므로 주소형 4바이트.
printf(9번:%d\n,sizeof(d[0])); //??????????????왜 10???
printf(10번:%d\n,sizeof(**d)); //??????????????????????왜 1? //4번의 3[b]같은 표현이나 **를 쓰는연산에 대해 이해가 잘 안갑니다ㅠㅠ}
-
들찬길
저도 더 자세하게 배워가네요.
감사합니다. -
첫빛
감사합니다!
-
조히
**d는 d는 char[10]을 가리키는 포인터고, *d는 char[10]이고, **d는 d가 가리키는 char[10]중 첫번째 char입니다.
-
풍란
d[0]은 *d와 같고, *d는 char배열 10개이므로 10
-
핫보라
3[b]나 b[3]이나 같습니다. 배열b의 4번째는 char이므로 1