[질문] 포인터 사용시...일관성이 없는건지요?
글쓴이: hurryon / 작성시간: 수, 2003/05/07 - 4:21오전
아직은 하수라...이것이 일관성이 없어 보입니다. 혹은 배열의 특징때문에
이렇게 되는지요?
#include <stdio.h> int main(void) { char name[] = "leejonghyouk"; char *nick = "hurryon"; char *ptr; ptr = name; printf("%s\n", name); printf("%s\n", nick); printf("%s\n", ptr); printf("%s\n", *ptr); /* 세그먼테이션 에러 */ return(0); }
그리고...
#include <stdio.h> int main(void) { int a = 10; int *a_ptr; a_ptr = & printf("%d\n", a); printf("%d\n", a_ptr); /* 잘못된 값 */ printf("%d\n", *a_ptr); return(0); }
위의 2개의 코드을 보시면 알겠지만 문자을 사용할때는 그냥
ptr을 사용해야 하고 정수을 사용할때는 *a_ptr 을 사용해야 제대로
된 결과값을 내 놓습니다. 왜 이런지요?
제가 알고 있는 포인터의 상식은
#include <stdio.h> int main(void) { int a = 10; int *a_ptr; a_ptr = & }
위와 같을때...
*a_ptr --> a_ptr 포인터가 가르키고 있는 a라는 변수의 값
a_ptr --> 포인터 변수(보통 주소가 들어감)
&a_ptr --> a_ptr 포인터 변수의 주소
이렇게 알고 있습니다. 왜 문자을 사용할때와 정수을 사용할때는 위와같이
포인터 사용에 일관성(?)이 없는지요?
[/code]
Forums:
printf 문의 %s %d 의 차이가 아닐까요?
printf("%s\n", 12345); 이렇게 하면..
12345번 주소에 있는 값을 화면에 출력하는 것이고.
printf("%d\n", 12345); 하면
12345라는 값을 출력하라는 %s 와 %d 의 차이 같습니다.
^^
포인터에 일관성이 없는게 아닙니다.관점의 차이인데, 문자(charac
포인터에 일관성이 없는게 아닙니다.
관점의 차이인데, 문자(character)나 정수(integer)에 쓰는 포인터는 사용 방법이 같습니다.
문자열(string)은 C 언어에서 문자의 배열(array of character)로 취급되기 때문에 다른 것이죠. 예를 들어:
다시 말하지만 문자열은 배열입니다. 그리고 배열의 특성상, 배열의 이름만 쓸 경우, 배열 0번째 요소를 가리키는 주소가 되므로, 위에서 `p'는 `&p[0]'과 같습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
[code:1]int main(){
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
포인터 변수와 일반 변수는 조금 목적이 틀립니다. 예를 들어서,
포인터 변수와 일반 변수는 조금 목적이 틀립니다.
예를 들어서, int abc 는 어떤 정수값을 넣기 위한 공간을 할당하고
int *abc 는 int 형 정수를 넣을 공간을 가리키기 위해서 사용합니다.
그리고 포인터 abc가 가리키는 곳의 값을 가져오기 위해서는 *abc처럼
앞에 * 표를 사용합니다.
다시 한번 정리하면,
int abc = 3; 정수값을 저장
int *p = & p에는 abc의 메모리 주소가 들어간다.
*p; 는 이제 그 메모리 주소안에 있는 실제 값 3을 가리키게 된다.
그럼 고운 하루
=========================
CharSyam ^^ --- 고운 하루
=========================
댓글 달기