GCC

포스트: 6|아이템:GCC(4)
Tags

Posts

6 posts

[C언어] 포인터 (p + 1) 연산

Guillermo Austin Kim|2018년 5월 5일

포인터의 기본 문법에 대해서 조금 더 알아볼게요. 코드는 다음과 같습니다. int i = 10; int *p = &i; *p = 20; 이 때 64 비트 CPU 기반으로 메모리 구조를 한번 그려볼까요? 1008번지에는 i란 지역변수가 있고 1000 번지에는 p란 포인터 타입 지역 변수가 위치해 있죠.포인터 주소 값 | 1000 |--- 1008 | | p | 1008 |--- (10 -> 20) i 변수 i의 위치가 1008번지라면 포인터 변수 p에는 i 변수 주소를 대입했으므로 p는 int을 가르키는 주소가 됩니다.이 때 주소 변수를 선언하는 방법은 int *p입니다. 그런데 컴파일러는 이 선언부를 다음과 같이 해석합니다.pointer

GCC - C언어 매크로(Macro) -(1)

Guillermo Austin Kim|2018년 4월 30일

C Macro를 잘 알아두면 편리합니다. Register 설정을 Macro로 관리하면 엄청 편하거든요. 주소를 다 외울 수는 없으니까요. 그리고 일단은 Macro도 argument를 받을 수 있어요. 이런 Macro를 선언해서 쓰는 방법도 여러 가지가 있습니다. Macro는 자주 쓰이는 코드 묶음을 한 개로 쓸 수 있다는 장점이 있어요. 예를 들어서 코드를 짜다 보니까, critical_section_in();ret = io_read ();critical_section_out(); 이라는 부분이 반복되면 계속 위 코드를 입력하기 귀찮겠죠? 이 코드들을 아름답게 하나의 Macro로 만들 수 있습니다. 그러면 #define으로 CRITICAL_IO_IN() 을 선언하는데, 반복되는 부분을 역슬래쉬 "\" 으로