포인터 변수 p를 가정할때 p+1은
포인터 변수 p의 타입 (char*, int*)에 따라서 계산 결과가 달라집니다.
int *pi;
char *pc;
에서 pi+1은 pi의 주소값에 int의 바이트 크기(4)만큼 이동되고
pc+1은 pc의 주소값에 char의 바이트크기(1)만큼 이동됩니다.
포인터변수에 +연산은 위처럼 포인터 변수의 타입에 따라서 하는 행동이 달라집니다.
*연산자는 뒤의 변수에 저장된 값(메모리주소)으로 메모리에 찾아가 해당 메모리에 저장되어 있는 값을 반환 하는 연산자 입니다.
또는 포인터 변수 생성시나 곱하기로도 사용되지요.
붕붕이 님이 쓰신 글 :
: 안녕하세요
:
: 포인터와 1차 배열 중 포인트는 현재 4바이트 할당인데
:
: 포인터 변수 p를 가정하고
:
: p+1은 p가 저장하고있는 주소값에서 4바이트가 이동되는지..
:
: 아니면 p가 저장하고있는 주소의 변수 자료형 만큼 이동되는지 의문이 들어서요..
: ex)
: char * p;
: char a;
: p=a;
: 이경우도 포인터 변수는 4byte만큼 할당대자나요
:
: 근대 (p+1)일때와 *(p+1)일때 차이점좀 알려주실수있을까요?
:
:
|