a랑 &a[0]은 같은데 이게 얼마나 같냐면
진짜로 같다.
무슨 면에서냐면 &와 *의 효과는 컴파일될 때 서로 상쇄된다는 점에서.
int *ptr; // 쓰레기 값으로 초기화된 포인터
printf("%d\n", *ptr);
이건 보통 오류가 뜨겠지만
int *ptr;
printf("%p\n", &*ptr);
이건 *ptr에 대한 메모리 접근이 실제로 이루어지지 않아서 상관없다.
int *arr = malloc(72);
free(arr); // malloc이 실패했어도 free는 안전함 (상식으로 알아둬라)
printf("%p\n", &arr[0]);
같은 이유로 이것도 상관없지.
이런 식으로 실제의 값 평가가 없이 실행되는 게 몇 가지 있는데 sizeof도 그러하다.
int *ptr;
printf("%d\n", sizeof *ptr); // 아무 문제 없음. sizeof(int)가 출력된다
그나저나 또다른 상식으로 sizeof 뒤에 자료형이 붙을 때가 아니면 괄호는 생략 가능하다는 것도 알아둬라.
int n, *p;
printf("%d %d %d\n", sizeof + n, sizeof - n, sizeof * p); // 이렇게 띄어쓰기를 넣으면 멍청한 새끼들을 헷갈리게 만들 수 있다
a랑 &a[0] 얘기가 또 나왔길래 재밌는 얘기 하나 해준다
밍고스사랑해(mingosudaisuki)
2016-04-21 08:09
추천 2
댓글 1
다른 게시글
-
티맥슨지 엠씨더맥슨지 강간범은꺼지고 그래서 우분투fglrx [1]숙자(59.27) | 16.04.21추천 0
-
티맥스도 극혐인데 컴알못새끼들이 티맥스욕하는꼬라지가 더극혐 [7]이수욱자(59.27) | 16.04.21추천 1
-
이거 뭔말임? [1]이수욱자(59.27) | 16.04.21추천 0
-
자바 콜 바이 레퍼런스 예제 이해가 안되는데 도움! [2]익명(119.202) | 16.04.21추천 0
-
안드로이드 앱 만들려면 [3]거울(117.55) | 16.04.21추천 0
-
허프만 압축 동적/정적 차이좀 명확하게 설명해줄 형있음?익명(211.36) | 16.04.21추천 0
-
Visual C++ 컴파일러 없이 MFC 쓸수있음? [2]익명(203.128) | 16.04.21추천 0
-
형들 급합니다 c언어 이것좀 알려주십쇼 [4]도파민(1q2w32) | 16.04.21추천 0
-
하드웨어 잘아는 사람은 소프트웨어도 그냥 잘하는데컴공무쓸모(203.128) | 16.04.21추천 1
-
9시시험...토라도라정주행...잡대컴공(stakeholder) | 16.04.21추천 0
상식ㄷㄷ