목록C (2)
뇌

문제 1 & 연산자의 역할 #include void main() { int a=10; printf("%p\n", a); } 이 코드는 그냥 16진수로 출력해주는 포맷스트링 %p 를 이용하여 int 형 변수 a 를 출력하는 간단한 코드이다. [출력] 10진수 10 은 16진수로 0xa 이다. 그러므로 0xa 가 %p 의 인자값으로 들어가기 때문에 당연히 0xa 가 출력될 것이다. 그럼 아래 코드를 보자. #include void main() { int a=10; printf("%p\n", &a); } 이 코드는 위 코드에서 %p 의 인자값 a 를 &a 로만 바꾼 코드이다. 그럼 이 코드는 어떻게 출력될까 ? 위 두 코드를 gdb 를 이용하여 어셈블리어로 분석해보자. [ 첫 번째 코드 ] 0x00000000..

포인터( pointer ) 란 ? 메모리의 주소값 혹은 변수의 주소값을 가르키는( 저장하는 ) 변수 이다. 32bit 환경에서의 주소값은 4byte 이고, 64bit 환경에서의 주소값은 8byte 이다. 선언 방식 자료형 *변수명; // ex) int *Ptr; 자료형 * 변수명; // ex) int * Ptr; 자료형* 변수명; // ex) int* Ptr; * 은 어느 쪽에 써도 상관 없다. 포인터 변수 초기화 int a=1; int *Ptr=&a; int 형 변수 a 를 선언하고, int * 형 변수 Ptr 를 선언해 a 의 주소값을 넣을 수 있다. & 는 주소값을 가져오는 '주소 연산자' 이다. a 의 주소값이 0x12345678 이라면, &a 의 값은 0x12345678 이 된다. // poin..