메모리에 값이 저장되는게 포인터는 주소값이고 배열은 정수(定數)값인데 왜 둘다 *로 표기할수있게 했을까?
배열이랑 포인터랑 근본적으로 다른거 아님?
니헵(hep93)
2015-07-20 13:07
추천 1
댓글 16
다른 게시글
-
dll 인젝션은 어디가면 배울 수 있나요? [3]익명(121.143) | 15.07.20추천 0
-
리버싱 기초라는 지뢰찾기 맵핵 클리어 했는데 이제 뭐하면 되나요? [3]dd(121.143) | 15.07.20추천 0
-
개구리는 [7]11(112.149) | 15.07.20추천 0
-
대출성공함 ㅠ_ㅠ [8]비욘드(211.203) | 15.07.20추천 0
-
티나누나가 자살하라고해서 자살하러가여... [1]s1bnubee(211.36) | 15.07.20추천 0
-
이짤 귀엽지 않냐 ? ㅇㅇ ? [5]☎2.60™(roidz) | 15.07.20추천 0
-
자바개발자양성 국비지원 채용연수 [1]JAVA(222.111) | 15.07.20추천 0
-
빼애액ㅊㄹ(118.39) | 15.07.20추천 0
-
요즘 대세는 서버지!ㄴㄴ(116.37) | 15.07.20추천 0
-
귀여운 s1bnubee(5살) 이 나쁜아저씨한태맞으면 일어나는상황 [1]s1bnubee(211.36) | 15.07.20추천 0
근본적으로 포인터 아닙니가? 연산자 []가 *로 정의되어 있는데!
int a[5]로 선언하고 *a를 참조하면 a[0]의 주소값이 참조되는데 &a라고 하는게 더 의미가 맞지 않나
a[b] == *(a+b) 랍니다 그래서 모양새는 이상하지만 arr[index] == index[arr] 요것도 맞는 말이에여
ㅊㄹ/ p가 포인터고 a가 배열이면 p라는거는 스택안에 p의 위치에 주소값이 들어있음. 근데 배열은 정수값으로 채워져있고 a를 참조하는것은 a[0]의 주소값을 읽어내는거라 컴파일할때 아마 처리가 다를걸
그니까 *p는 메모리 안에 p위치에 들어있는 주소값을 참조하는거고 *a는 a[0]의 주소를 레지스터로 읽어온다음에 그거를 참조하는거
배열은 constant pointer 다.
기본정의잖아.
예를들어 우편번호 적는 [ ][ ][ ] - [ ][ ][ ] 사각형 박스가 포인터면
배열은 거기 적히는 특정 숫자 그 자체지.
그래서 lvalue 로 사용될 수 없다.
int a[5]; int* b; 가 있을 때, b = a; 이건 성립. b 가 lvalue 일 수 있는 변수니까.
반대로 a = b; 이건 성립안됨. a 가 lvalue 일 수 없는 상수니까.
즉 배열이란, 데이타 영역에 갯수만큼의 단위공간을 할당한 그 주소 자체다.
(시작주소)
그렇게따지면 int i;의 i에 접근할때도 포인터로 접근하는데?
codesafer//갯수->개수