*p는 가리키고 있는 주소의 값을 의미합니다. p가 가지고 있는 값이 주소입니다. 간단한 예로 아래 영그이 님이
써놓으신 것을 예로 하죠
char M = 'h';
char *mp ;
mp =& M;
*mp ='A";
printf("%c",M);
printf("%c",*mp);
질문에 보시면 *p 는 주소의값을 말하는거 아닌가요 라고 하셨는데요 위의 mp =& M;을 보시면 &는 주소값을
얻을때 사용하신다고 보면 됩니다. 알고 계시리라 생각합니다. 그럼 mp에는 당연히 M의 주소값이 들어가겠지요.
간단히 원하시는 내용을 출력하는 소스를 보면 쉽게 더 이해하실겁니다.
#include<stdio.h>
int main(void){
int M[5]={3,6,9,12,15};
int *p = M;
int a=0;
for(a=0;a<5;a++){
printf("%d",p[a]);
}
return 0;
}
int *p=M은 다음의 내용을 요약한 것입니다.
int *p; p=&M[0]; //p=M; 이런식으로도 가능합니다.
그럼 요약을 풀어버린 소스를 보자면 이렇게 되겠지요.
#include<stdio.h>
int main(void){
int M[5]={3,6,9,12,15};
int *p;
p= M;
int a=0;
for(a=0;a<5;a++){
printf("%d",p[a]);
}
return 0;
}
이렇게 하면 이해가 좀 쉬우실지 모르겠습니다. 그리고 일단 함 프로그램을 돌려보시고요 에러메세지와 모르시는
부분을 이야기하시면 좀 더 쉽게 답변을 얻으실거에요. 소스가 길어지고 주석이 없으면 귀찮아서 안보게 되거든요
^^;; (저만 그럴지도... 영그이님이 그렇다는 건 아니고요. 밑에 운영자님 글을 보게되세요 ㅋ)
그럼 즐프하시고요~ 좋은 하루 보내세요.
영그이 님이 쓰신 글 :
: char M = 'h';
: char *mp ;
: mp =& M;
: *mp ='A";
: printf("%c",M);
: printf("%c",*mp);
:
: 이러면 AA가 출력되잖아요 이건알겠는데요
:
: int M[5]={3,6,9,12,15};
:
: int *p = M;
: int a=0;
: for(a=0;a<5;<a++)
: printf("%d",printf(*p[a]);
:
: ==========================================
: 강의를 보다가 여기서 p 와 M 이 같다라고 하는데요
:
: 이것이 이해가 안가요
:
: M 은 M[0] 번지의 주소이잖아요
:
: *p 는 주소의값을 말하는거 아닌가요
: *p = M ;
: 이러면
: *p = M[0]번지의 주소
: 이게 말이 되는건가요?
: 음..머리가 아주 복잡하네요 ^^;
|