IVS43 [C] 메모리 관련 C 언어에서 메모리는 프로그램 실행 중 데이터를 저장하고 관리하기 위해 여러 메모리 영역으로 나뉜다. 각각의 영역은 특정 유형의 데이터와 목적에 따라 구분된다. 아래와 같은 순서를 따른다.+-----------------------+ 1. 코드(Code) 영역 설명:실행할 프로그램의 코드(명령어)가 저장되는 영역.기계어 형태로 저장되어 프로세서가 직접 실행한다.특징:읽기 전용: 코드가 수정되지 않도록 보호.프로그램이 시작될 때 메모리에 로드되며, 종료될 때 해제된다. void myFunction() { /* 이 함수의 명령어가 코드 영역에 저장됩니다 */ } 2. 데이터(Data) 영역설명:프로그램에서 전역 변수와 정적 변수가 저장되는 영역.초기화된 전역/정적 변수와 초기화되지 않은 전역/정.. 2025. 1. 13. [C] const 키워드 const 키워드변경할 수 없는 값을 선언하기 위해 사용특정 데이터의 값을 의도치 않게 변경하는 것을 방지한다. 아래의 차이점을 알아보자. const int num = 10;const int* ptr = #int* const ptr = #const int* const ptr = # 1. const int num = 10;설명:num은 상수(const) 정수로 선언되었으며, 값을 변경할 수 없다.특징:값을 초기화하지 않으면 컴파일 오류가 발생한다.num에 새로운 값을 할당하려고 하면 오류가 발생한다.const int num = 10;// num = 20; // 컴파일 오류: 상수 값을 변경할 수 없음 2. const int* ptr = #설명: 데이터를 보호하고 싶.. 2025. 1. 13. [C/C++] 배열 초기화 - memset, fill 배열 초기화 - memset, fillmemset - 바이트 단위 설명: 메모리 블록의 모든 바이트를 특정 값으로 초기화용도: 배열 또는 메모리를 특정 값(바이트 단위)으로 초기화할 때 사용.특징:바이트 단위로 동작: value는 0~255 범위의 값을 사용.모든 바이트가 동일한 값으로 설정됨.값을 일일히 for문으로 넣는 것보다 훨씬 빠르다. 사용법void* memset(void* ptr, int value, size_t num); ptr: 메모리 블록의 시작 주소.value: 설정할 값 (하위 8비트만 사용됨).num: 설정할 바이트 수. 사용예시int arr[5];memset(arr, 0, sizeof(arr)); // 모든 바이트를 0으로 초기화 주의사항바이트 단위로 동작하므로, int와 .. 2025. 1. 13. [C] 형변환, 비트연산자 - mcu는 c에 최적화되어 있다. (안전등급 충족 X) 조건문- if문에서 왼쪽 식이 만족하지 않으므로, y++은 실행되지 않는다.#include int main() { int x = 5; int y = 10; if (x 형변환#include #include int main() { // %u: unsigned_int char s8_1 = 0, s8_2 = 0; short s16_1 = 32767; int s32_1 = -1; unsigned int u32_1 = 1u; printf("1. %d\n", sizeof(s8_1 + s8_2)); printf("2. %d, %d, %u\n", sizeof(32767 * 100000), 32767 * 1000.. 2025. 1. 13. [C++] 문자열 처리- strcmp, strcpy, strcat strcmpstrcmp 함수는 C/C++에서 두 문자열을 사전 순으로 비교하는 함수이다.문자열을 사전식 정렬하거나 비교 연산을 수행할 때 사용된다.헤더파일#include 함수 원형int strcmp(const char* str1, const char* str2); 매개변수const char* str1: 비교할 첫 번째 문자열.const char* str2: 비교할 두 번째 문자열.반환값음수: str1이 str2보다 사전 순으로 앞선 경우.0: str1과 str2가 동일한 경우.양수: str1이 str2보다 사전 순으로 뒤에 있는 경우. 작동원리strcmp는 두 문자열의 각 문자를 ASCII 값으로 비교한다.str1과 str2의 각 문자를 차례로 비교두 문자가 다르면, 해당 문자의 ASCII 값 차이.. 2025. 1. 9. [C++] 공백있는 문자열 입력받기 - getline 아래와 같이, 공백이 있는 "hello world" 를 입력 받고 출력하면 "hello"만 출력된다.위 코드에서는 scanf("%s", arr)를 사용했기 때문에, 공백을 포함한 문자열을 입력받을 수 없다. scanf는 공백이나 개행 문자를 만나면 입력을 중단하기 때문에, "hello world"를 입력하면 arr에는 "hello"만 저장된다.#include using namespace std;int main(void){ char arr[20]; // hello world 입력받고 출력하기 scanf("%s", arr); // hello world 입력 printf("%s", arr); // hello만 출력 return 0;} 공백을 포함한 문자열을 입력받기 위해서는? get.. 2025. 1. 9. 이전 1 2 3 4 5 6 7 8 다음