배열,포인터 sizeof연산에 대해서 질문이요!
마음
2023.04.01
char str[30];
char* pStr=(char*)malloc(sizeof(char) * 30);이 배열 str 과 포인터 pStr 을 sizeof연산시
sizeof(str) -- 반환값 : 30
sizeof(pStr) -- 반환값 : 4
배열이름 str 은 배열str의 첫번째 주소값
포인터 pStr 은 동적할당받은 char*30의 첫번째주소값
결국 둘다 주소값을 인자로 전달해줫는데
어째서 결과는 다른건가요?
char str[2][30] ;
이렇게 이차원배열선언되어있을시 str[0] 은 이차원배열str의 1행만 가르키고(1행배열메모리사이즈 반환?)
str 은이차원배열str 의 전채를 가르킨다.
즉 sizeof(str[0]) --반환값 30
sizeof(str) --반환값: 60
이렇게 되는 이유가뭔가요?
정말 궁금해서 미쳐버리겟네요...;;
마구잡이로 외우는걸 싫어해서요.. 어렵게 설명해주셔도됩니다
부탁드립니다