int arr[5];
printf("%d \n", sizeof(arr));
int * arr2 = (int*)malloc(sizeof(int)*5);
printf("%d", sizeof(arr2));
위에 출력은 20이 뜨고
아래의 출력은 그냥 4가뜨는데 이유가 뭘까?
arr2의 사이즈는 그냥 int포인트 사이즈가 뜨네...
배열과 포인터는 같다고 생각해도 되는거 아닌가요?
int arr[5];
printf("%d \n", sizeof(arr));
int * arr2 = (int*)malloc(sizeof(int)*5);
printf("%d", sizeof(arr2));
저도 눕이지만 알려드릴게여! 데니스 리치가 쓴 책에서 봤던 거 같은데 음
배열 이름은 sizeof연산자의 피연산자일 경우( sizeof(arr) ), 단항&연산자의 피연산자인 경우 &arr;, 배열 초기화시에 사용된 문자열 상수인 경우char s[] = "text"를 "제외"하고
배열 타입을 갖는 수식은 포인터 타입의 수식으로 변환되며, 그값은 배열의 첫번재 원소를 가리키며 l-value가 될수 없다
그래서 그 sizeof에 들어갈때는 예외인거 같네요