본문 바로가기

프로그래밍 언어20

포인터(2) - 포인터 배열 / 배열 포인터 해당 글은 개인 공부 정리를 위해 작성되었습니다.포인터 배열포인터 배열 : 배열 요소로 포인터 변수를 가지는 배열을 의미합니다. 즉, 포인터 변수로 이루어진 '배열'을 의미합니다.포인터 배열은 기본 자료형 배열과 크게 다르지 않습니다. 다만 주소값을 저장할 수 있는 포인터 변수를 대상으로 선언된 배열일 뿐입니다. 선언 방법 : 자료형  * 배열명[크기]  #include int main(void){ int num1 = 1, num2 = 2, num3 = 3; int * arr[3] = { &num1, &num2, &num3 }; // 포인터 배열 선언 및 초기화 printf("주소값 : %p %p %p\n", arr[0], arr[1], arr[2]); printf("값 :.. 2024. 7. 11.
비트 마스크 비트 연산 : 비트를 기본 단위로 연산을 시켜주는 연산자, 피연산자는 반드시 두 개의 정수이여만 하는 이항 연산자.실수는 비트 연산 불가능 비트 마스크는 임베디드 시스템에서 몇가지 장점을 가진다 .  비트 마스크는 주로  세가지 역할로  나눌수 있다.특정 비트를 특정 값으로 만들거나  비트 값을 2배수 연산 시 , 특정 비트 값을 얻기 위한 용도이다. ※특정 비트 제어A라는 집합이 있다고 하자, k  번째  비트를 제어하고 싶다.  1. k번째 비트만 1으로 만들기 (BIT SET) A |=  (1  2. k번째 비트만 0으로 만들기 (BIT RESET or Clear) A &= ~(1  3. k번째 비트 토글하기(BIT TOGGLE) A ^= (1 ※ 2배수 연산 1. 해당 수 2배수 곱하기  집합 값.. 2024. 5. 22.
volatile 지시자 C언어 컴파일러 지시자 중에 'volatile' 지시자에 대해 포스팅한다. MCU FW 프로그래밍을 하다 보면 레지스터를 제어하기 위해 같은 주소에 여러번 값을 여러번 쓰는 경우가 빈번하고,  앞에 volatile 키워드를 사용하는 경우를 볼 수 있다.  ※사용법 원형 : volatile [type] [variable_name];ex) *(volatile unsigned int *)0x8CFF = 0x8001, volatile int num1; 아래와 같은 상황들에서  volatile을 제대로 사용하지 않아서 문제 발생 가능성이 있다. 컴파일화 최적화를 사용하지 않으면 제대로 동작하는 코드가 최적화만 사용 시 인터럽트를 사용하지 않으면 잘 동작하는 코드가 인터럽트 사용시메모리 주소를 가진 I/O 레지스터.. 2024. 5. 8.
extern 구조체 또는 변수 사용법 및 예시 분할 컴파일 : 하나의 프로그램을 여러 개의 .c, .h 파일로 분할하여 작성분할 컴파일 시 다른 파일에 선언된 전역 변수를 사용할 떄는 extern 선언을 사용-> extern 선언 변수는 "다른 파일에 해당 변수명이 전역 변수 선언되어 있으니 공유하여 사용하겠다" 1. 변수형식  : extern 자료형 변수명 사용법1) .c 파일에서 extern 선언ex) exam2.c, exam3.c 에서 exam1.c의 전역변수 total을 사용하고 한다. exam1.cexam1.c에 아래와 같이 정의한다.int total=0; //전역 변수 선언main() {...}exam2.cexam2.c에 아래와 같이 정의한다.extern int total //extern 변수 선언, 다른 .c 파일에 전역 선언된 변수 접.. 2024. 5. 8.