포인터

a, 'a', "a" 의 차이 a 는 변수입니다.a 라는 변수는 형에 따라서 다양한 값을 입력시킬 수 있습니다.int a; a = 5; a = 'a'; a = '7'; 'a' 는 문자 상수입니다. 상수이기 때문에 'a' 는 변하지 않습니다.시스템 내부적으로 'a' 는 ASCII 수치로 변환되어 처리됩니다. ( 'a' 의 ASCII 의 값은 97 입니다. ) "a" 는 문자열 입니다.문자열은 반드시 널 문자로 끝나도록 정해져 있으므로 "a" 도 역시 '\0' 를 포함하고 있습니다. 문자열 포인터 변수 문자열 포인터 변수는 포인터 변수이기 때문에 변수에 저장되는 값은 주소가 됩니다.이 주소가 가리키는 대상체가 문자열일 때 이것을 문자열 포인터 변수라고 지칭합니다.정확히는 문자열이 저장된 곳의 가장 첫번째 문..
들어가기 앞서 아래의 소스를 읽기만 하고 넘어가겠습니다.main() { int i, j; int mozi[2][2] = { {0, 0}, {1, 1} }; int (*tistory)[2]; tistory = mozi; for(i=0; i
1차원 배열과 초기화 아래의 프로그램을 보면 배열명을 사용하기 전에 이 배열이 어떠한 값을 저장할 수 있는지를 지정하는 타입이 있고,배열의 첨자를 이용하여 배열의 개수를 지정한다는 것을 알 수 있습니다.C 에서 배열의 첨자는 반드시 0 부터 시작합니다.그러므로 정의할 때의 첨자 수와 사용할때의 첨자는 -1의 오차를 보이게 됩니다.즉 아래 프로그램에서 mozi[2] 는 사용해서는 안됩니다.main() { int mozi[2]; printf("%d %d\n", mozi[0], mozi[1]); } 배열의 초기화위의 프로그램에서 배열은 초기화를 하지 않았습니다.초기화를 하지 않았기 때문에 어떠한 값이 들어가 있는지 아무도 모르며, 아무값이나 출력됩니다.아무값이나 출력되지 않게 하기 위해서는 초기화를 해줘야 합..
포인터란 무엇인가? 포인터는 번지에 대한 기호화된 표현을 의미합니다.즉, 포인터는 번지입니다. 이해가 잘 안될 수 있으므로,int mozi; 라는 변수를 정의합니다. 시스템은 정의를 만나는 순간 mozi 변수에 대해 4 byte 의 메모리를 할당해줍니다.시스템이 할당해준 4 byte 는 다른 프로세스들이 할당받지 못하며, 각 byte 는 모두 이름을 가지는데 이를 번지라고 합니다. 그림으로 표현하면 다음과 같습니다. 결국 포인터라는 것은 메모리의 위치를 표현한 기호를 의미합니다. 포인터 변수 포인터는 메모리의 특정 위치를 가리킨다고 했습니다.그렇다면 포인터 변수는 무엇을 의미할까요?포인터 변수는 포인터를 저장할 수 있는 변수를 말합니다.이 말은, 메모리의 특정 위치를 저장한다는 말과도 동일합니다. 즉, ..
Pointer주소값을 가지는 변수입니다. 주소값이란모든 변수는 주소값을 가지며, & 를 사용하여 조회할 수 있습니다.다음 소스는 p 의 변수 값과, p 가 할당된 메모리 주소를 조회합니다.#include main() { int p = 0; printf("p value = %d, p memory address %p\n", p, &p); return 0; }p value = 0, p memory address 0x7ffc317fdcdc위의 소스를 수행할 때 memory 상의 0x7ffc317fdcdc 주소에 0 이 저장되어 있습니다. 포인터를 선언하는 방법변수명 앞에 * 를 사용하여 포인터 변수를 선언합니다.Valuetype *valuename; int 형 포인트 변수 p 를 선언하였습니다. 이후에 포인터 ..
꽁담
'포인터' 태그의 글 목록