pointer 에 대해

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> int main(void) { /* 포인터 p 는 주솟값을 저장한다. */ int *p; int a; p = &a; printf("포인터 p 에 들어 있는 값 : %p \n", p); printf("int 변수 a 가 저장된 주소 : %p \n", &a); a = 2; /* *p 나를 나에게 저장된 주소값의 데이터로 생각해줘 */ printf("a 의 값 : %d \n", a); printf("*p 의 값 : %d \n", *p); /* 왜 포인터의 타입이 주소값인 8bite 짜리가 아니라 int 인지 */ int a; pointer *p; p = &a; *p = 4; /* 이렇게 된다면 a 의 시작 주소값을 가지고 a 의 데이터를 바꾸어야 하는데 시작부터 얼만큼 읽어야 하는지 알 수 없다. */ int a; int *p; p = &a; *p = 4; /* 이렇게 하면 포인터 p 는 int * 라는 사실을 보고 아 나는 int 데이터를 가리키는 구나 라고 4bite 를 딱 읽는다. */ /* 이 pa 포인터는 const int 형 변수를 가르키는데 그 값을 바구지 말라는 뜻 이 포인터의 주소값을 바구지 말라는 것이 아니라 */ const int* pa = &a; /* 이 pa 포인터의 주소값을 바꾸지 말아라 */ int* const pa = &a; /* 이 pa 포인터의 주소값과 가리키는 데이터를 바꾸지 말아라 */ const int* const pa = &a; /* 포인터의 주소값 덧샘 구조와 가르키는 원소 */ int arr[6] = {1, 2, 3, 4, 5, 6}; int* parr = arr; *(parr + 3) // parr 은 int 형이라 주소값 4씩 더해져서 // (parr 초기 주소값 + 4x3) 이 가리키는 데이터 = 4 가 된다 /* 2차원 포인터 지정하기 */ int arr[2][3] = {{1,2,3}, {4,5,6}}; int **parr; parr = arr; printf("%d", parr[1][1]); // parr[1][1] 는 *(*(parr + 1) + 1) 으로 parr 포인터 int* (주소값)를 가리켜서 8 bite // ( (parr 초기 주소값 + 8) 의 데이터는 = 4 // *(4(가리키는 데이터) + 1(주소값)) 이때 *(parr + 1) 은 int 를 가리키므로 4 bite // *(4(가리키는 데이터) + 4(주소값)) 은 = 7을 가리키는 데이터 즉 말이 안된다. return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines