주소는 소위 lvalue에 대해서만 얻을 수 있는 거야
&72 하면 당연히 오류가 남
int arr[72]; 하고 &arr이 되는 건 arr이 상수가 아니라 배열 변수이기 때문이고
arr은 int를 가리키는 포인터지만 &arr은 int [72]를 가리키는 포인터이며
&arr이 arr과 같은 주소이듯이 (&arr)[1]은 &arr[73]과 같은 주소임
자료형은 다르지만.
상수의 주소값은 애초에 얻어지지도 않고 오류가 나지
밍고스사랑해(mingosudaisuki)
2016-04-18 21:56
추천 1
댓글 15
다른 게시글
-
형아들 프로그래밍 잘하려면 일본 애니봐야되여? [2]뻘글만쓰는..(bbeolgeul) | 16.04.18추천 0
-
문득 든 의문인데 배열이름 가지고 포인터인지 고민하는 사람은 많은데 [3]익명(192.96) | 16.04.18추천 0
-
멍청한 ㅅㄲ가 유닉스 선생질한다 ㄷㄷ [1]익명(211.220) | 16.04.18추천 0
-
[완벽한 설명] 아까 나왔던 배열 얘기 설명해준다.real fact [10]밍고스사랑..(mingosudaisuki) | 16.04.18추천 13
-
프갤이 존나 싸움이 끊이지않는이유 [5]익명(119.106) | 16.04.18추천 0
-
오늘의 병신짓 [10]티나ㆍ스프..(tinaptec) | 16.04.18추천 0
-
갑자기 프로그래밍이 꼴린다 [3]에어로홍(aerohong) | 16.04.18추천 0
-
신입 희망연봉에 5천 써라 [2]익명(222.112) | 16.04.18추천 0
-
배열의 주소 넘기기 설명, 프로그램 실행과정 [1]mozzart(mozzart) | 16.04.18추천 7
-
면접보고왔다. 어디든 다 비슷한듯. [4]누테라볶음..(112.171) | 16.04.18추천 0
쒸불
애초에그럼 str이라는 배열변수명 즉 포인터상수는 자체적인 주소값이 따로 할당되지 않는다는거네요?
아니 씨발 배열변수명은 포인터상수가 아니라고 몇번을 말해
그렇게 평가될 뿐이야. (2 + 3)이 5로 평가되듯이
이설명도 밍고스님이랑 모짜르트님 조금차이가있는게 &arr;의 정상작동이유가 모짜르트님은 상수의 주소값연산은 씹혀서 안된다는거고 밍고스님은 arr이 상수가아니라 배열변수라서 라고설명해주셔서 조금차이가있는거같은데 맞나용
int n = 2 + 3; 했을 때 그 결과값인 5가 어딘가에 미리 존재했다가 n에 들어가는 게 아니라 2와 3으로부터 계산되는 것처럼
배열변수명이 포인터상수로 변환되는 것도 마찬가지야
배열변수명이 decay되어서 포인터상수로 취급된다 이거죠
아니 씨발 누구 설명이 맞는지는 해보면 알거 아냐
ㅇㅇ
배열변수명이 포인터상수가 아니라구요 ?? ㅜㅜ
http://thrillfighter.tistory.com/88
이사람글보고 그렇게 이해했는데
그럼 님이랑 모짜르트님이랑은 이유를 다르게생각한다는것? 다른얘기임두분이?
72는 나만 거슬리냐?
여러분 tcpl을 읽으십시오 해답이 있읍니다
const int a = 3; *(int*)&a = 5; 되는 컴파일러들 있으니 상수에서 주소 얻지 못한다는 애매한데요