즉.. 배열이름은 평소에 지정하면 포인터 즉 주소값을 의미하지만 사이즈오브일때는 먼가 다르게 배열이름이 적용된다는거임?
주소값(175.123)2012-12-23 14:27
배열이름 자체가 주소값 아니라는 소리죠 한마디로?
주소값(175.123)2012-12-23 14:29
sizeof(배열이름) 하면 배열의 메모리 크기가 나오잖음? int가 네 바이트고 그게 열개 있으니 sizeof(a)가 40
c(175.208)2012-12-23 14:30
포인터랑 sizeof의 경우랑 다르다고요 자꾸 딴소리하네
c(175.208)2012-12-23 14:31
sizeof(배열이름)=(배열이름)의 사이즈
길가던놈(rhapsody29)2012-12-23 15:57
사이즈 오브도 결국 구현된 메소드 아니냐
ㅁㅁ(175.194)2012-12-23 18:05
단순히 배열이름=포인터라고 생각하면 안된다. 타입형도 같이 고려해 줘야해. sizeof할 때 타입형도 고려가 되기 때문에 사이즈가 틀린거야. int a[10]하면 타입이 int[10] 이나 마찬가지고, int *a 하면 타입이 int* 인거야. 그리고 함수에 인자로 넘겨주면 사이즈가 포인터 사이즈가 나온다고 했는데.. 그것도 타입고려해줘야한다. void func(int a[]) 또는 void func(int *a) 라는 함수에 배열 넘겨주면 당연히 sizeof했을 때 4가 나오겠지만, void func(int a[10]) 이런식으로 해주고 넘겨주면 제대로 40이 나올걸... (이거는 테스트 안해봐서 정확하지 않겠지만, 기본적으로 그렇게 되리라 생각되서 적어본다.)
포인터 연산일때만 배열이름이 주소값이고 sizeof 매크로의 경우에는 다름
즉.. 배열이름은 평소에 지정하면 포인터 즉 주소값을 의미하지만 사이즈오브일때는 먼가 다르게 배열이름이 적용된다는거임?
배열이름 자체가 주소값 아니라는 소리죠 한마디로?
sizeof(배열이름) 하면 배열의 메모리 크기가 나오잖음? int가 네 바이트고 그게 열개 있으니 sizeof(a)가 40
포인터랑 sizeof의 경우랑 다르다고요 자꾸 딴소리하네
sizeof(배열이름)=(배열이름)의 사이즈
사이즈 오브도 결국 구현된 메소드 아니냐
단순히 배열이름=포인터라고 생각하면 안된다. 타입형도 같이 고려해 줘야해. sizeof할 때 타입형도 고려가 되기 때문에 사이즈가 틀린거야. int a[10]하면 타입이 int[10] 이나 마찬가지고, int *a 하면 타입이 int* 인거야. 그리고 함수에 인자로 넘겨주면 사이즈가 포인터 사이즈가 나온다고 했는데.. 그것도 타입고려해줘야한다. void func(int a[]) 또는 void func(int *a) 라는 함수에 배열 넘겨주면 당연히 sizeof했을 때 4가 나오겠지만, void func(int a[10]) 이런식으로 해주고 넘겨주면 제대로 40이 나올걸... (이거는 테스트 안해봐서 정확하지 않겠지만, 기본적으로 그렇게 되리라 생각되서 적어본다.)