[C언어] 포인터 (p + 1) 연산
By 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
가위바위보
By Regular Admission Empire | 2018년 1월 6일 |
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { srand(time(0)); int a; int b; printf("가위바위보 게임을 시작합니다\n"); while(a=5) { printf("1은 가위 2는 바위 3은 보입니다. 4를 입력하면 게임이 종료됩니다. 숫자를 입력하세요"); scanf("%d",&a); if (a==4) { break; } b = rand()%3+1; switch(a) { case 1 : printf("당신 = 가위 "); break;
[리눅스커널] GCC 지시어
By Guillermo Austin Kim | 2019년 12월 21일 |
[부록-A] GCC 지시어 리눅스 커널 코드를 읽다 보면 낯선 구문을 만날 가능성이 높습니다. 이 중 하나가 GCC 컴파일러 지시어입니다. 이번 시간에는 리눅스 커널에서 자주 쓰는 GCC 지시어를 소개합니다. 1. __init과 __section() __init 키워드가 함수 선언부에 있으면 해당 함수는 init.text 섹션에 위치합니다. 이해를 돕기 위해 __init 키워드로 선언된 함수를 봅시다. void __init lockup_detector_init(void)02 {03 set_sample_period(); 01번째 줄과 같이 lockup_detector_init() 함수 옆에 보이는 __init 구문입니다. 함수 선언부에 __init 키워드가 보이면 부팅 과정에서 1번 호출되는 함수라고
[C&Processor] 1장 입문 -3-
By 청춘의 꿈을 꾸는 블로그 | 2021년 7월 7일 |
입문 본 서에서 다루는 프로세서는 M3, M4에 대한 내용입니다. C언어로 작성된 명령어를 해석하고 연산을 수행하는 반도체를 Core 라 합니다.(컴퓨터로 작업을 한다는 것은 다른 말로 하면 연산을 한다고 표현할 수 있다.) 이렇게 해석이 된 명령은 명령에 따라 Output(Ex> Speaker, Motor, LED etc..)을 내는데 이러한 외부주변장치를 구동할 수 있도록 ' 연결통로 ' 를 ' Core '와 묶어서 만든 반도체를 ' Processor ' 라고 부릅니다. 즉, Core(연산부) + 연결통로(Wire부&소자) = Processor(Function적) 라 할 수 있다. ① I2C(온도센서), SPI(Flash Memory), UAR