포인터 point에 er을 붙인 것이다. pointer을 직역하면 '가르키는 것'이 되는데, 변수의 주소를 가지고 있는 변수이다. 즉, int i = 4이렇게 변수에 데이터를 저장했다고 가정했을때, 포인터는 변수i가 저장되어있는 메모리상 주소를 가진다. 주소 연산자 & 그렇다면 변수의 주소를 어떻게 알 수 있을까? 주소 연산자인 &를 사용하면된다. 간단한 예제를 살펴 보자. 1 2 3 4 5 6 7 8 9 #include int main(void) { int a = 10; printf("%u", &a);//%u는 주소를 십진수로 출력 return 0; } cs 이 예제에선, 변수 a를 선언하고 10을 저장했다. 그렇다면 이 변수 a가 저장되어 있는 메모리상 주소가 있을 것이다. &는 주소 연산자로써 &a..
입출력 함수의 분류(입출력 형식이 지정되느냐 않느냐) - 일단 눈에 익히고 가자 형식이 없는 입출력 getchar() : 문자입력 putchar() : 문자 출력 gets() : 문자열 입력 puts() : 문자열 출력 형식이 있는 입출력 printf() : 형식화된 출력 함수 scanf() : 형식화된 입력 함수 C언어에서는 모든 입출력은 스트림을 통하여 이루어진다. 그러므로 파일도 일련의 스트림으로 취급된다. 모든 파일은 입출력 동작이 발생하는 현재위치를 나타내는 파일 포인터(file pointer) = 주소를 가진다. 처음 파일을 열면 파일의 첫 번째 바이트를 가르킨다. 파일 읽기 쓰기의 순서 모든 파일은 데이터를 쓸때, open을 먼저 한다. 내부적으로는 파일과 연결된 스트림을 만들게된다. 파일을..
포인터로 주소를 저장하거나 그 주소에 있는 데이터를 읽어올 수 있다. 1 int *p = 10000 cs 이렇게 하면 p포인터변수에 절대주소 10000을 저장한다. 이 포인터 변수는 int형이기 때문에 주소인 10000번지로 가서, 4바이트만큼 읽어들인다. 만약에 포인터변수를 선언할 때 포인터타입이 없다면 주소로부터 몇바이트를 읽어야할지 모른다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main(void) { int i = 414; int *p = NULL; p = &i; printf("i = %d\n", i); //변수 i의 값 414 printf("&i = %u\n", &i); //변수 i가 저장되어있는 주소 printf("*p = %d\n",..