Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그래밍

  1. C 언어에서 정적(static) 변수 초기화하기 – 문법과 예제 총정리

    C 언어에서 static 키워드가 사용되면 해당 변수나 함수는 프로그램의 전체 실행 기간 동안 메모리에 할당되며, 프로그램이 종료될 때까지 유지됩니다. 정적으로 선언된 함수는 같은 파일 내부에서 직접 호출할 수 있어, 외부 노출을 제한하는 용도로도 활용됩니다. 정적 변수의 주요 특징 단 한 번만 초기화: 정적 변수는 프로그램 실행 중 딱 한 번만 초기화됩니다. 프로그램 수명 동안 유지: 컴파일러는 정적 변수를 프로그램이 끝날 때까지 메모리에 보존합니다. 선언 위치의 유연성: 정적 변수는 함수 내부 또는 외부 어디에서든 정의할 수

  2. C 언어로 두 문자열을 서로 교환하는 방법

    C 언어에서는 임시 변수와 루프를 활용해 두 문자열(문자 배열)의 내용을 서로 바꿀 수 있습니다. 아래 예제는 while 루프를 사용하여 두 문자열의 각 문자를 한 글자씩 교환하는 방법을 보여줍니다.예제 코드#include<stdio.h> #include <string.h> int main() { char st1[] = My 1st string; char st2[] = My 2nd string; char swap; int i = 0; while(st1[i] != \0) {

  3. C++ main()에서 return 문과 exit()의 차이점 완벽 정리

    C++에서 프로그램을 종료하는 방법은 크게 return 문과 exit() 함수 두 가지가 있습니다. 두 방법 모두 프로그램을 끝낼 수 있지만, 동작 방식과 내부 처리 과정에서 중요한 차이가 있습니다. 이 글에서는 각각의 특징과 차이점을 예제 코드와 함께 자세히 살펴보겠습니다. return 문이란? return 문은 현재 실행 중인 함수의 실행을 종료하고, 제어권을 해당 함수를 호출한 함수로 되돌려줍니다. int main() 함수에서는 정수 값을 반환하며, 이 값은 운영체제에 프로그램의 종료 상태를 알려주는 역할을 합니다. retu

  4. C/C++에서 exit()와 _Exit()의 차이점 완벽 정리

    exit() 함수란? exit() 함수는 호출 시점에 프로그램 실행을 즉시 종료하고, 이후의 코드는 더 이상 실행하지 않는 함수입니다. exit()가 호출되면 프로세스가 종료되며, C++에서는 자동 저장 기간을 가진 객체들의 소멸자가 호출되고 열려 있는 스트림의 버퍼가 플러시되는 등의 정리 작업이 수행됩니다. C 언어에서 exit() 함수는 <stdlib.h> 헤더 파일에 선언되어 있으며, 아무 값도 반환하지 않습니다(void 타입). exit() 문법 void exit(int status_value); status_v

  5. C/C++ 포인터 완벽 이해하기: 개념, 문법, 실전 예제

    포인터(Pointer)란 무엇인가?포인터는 기본적으로 다른 변수의 메모리 주소를 저장하는 변수입니다. 프로그램에서 변수에 메모리를 할당하면, 포인터는 그 변수가 위치한 주소를 가리키게 됩니다.C와 C++에서 포인터를 선언할 때는 단항 연산자인 별표(*)를 사용합니다. 이 연산자는 나중에 포인터가 가리키는 메모리 주소에 저장된 값을 읽어오는 역참조(dereference)에도 활용됩니다.포인터 선언 문법포인터를 선언하는 기본 문법은 다음과 같습니다.datatype *variable_name;각 구성 요소의 의미는 다음과 같습니다.dat

  6. C 언어에서 배열 포인터의 개념과 사용법

    배열 포인터란 무엇인가? 포인터(pointer)는 다른 변수의 주소(address)를 저장하는 특수한 변수입니다. 변수에 메모리가 할당되면 포인터는 그 변수가 위치한 메모리 주소를 가리키게 됩니다. 이때 단항 연산자(*)를 사용하여 포인터 변수를 선언할 수 있으며, 포인터에는 해당 메모리 공간의 주소 값이 저장됩니다. 그중 배열 포인터(array pointer)는 배열 변수가 차지하고 있는 메모리 블록의 시작 주소를 가리키는 포인터를 의미합니다. 배열 포인터 선언 문법 배열 포인터는 다음과 같은 형식으로 선언합니다. datatyp

  7. C 언어에서 변수 이름을 출력하는 방법

    C 프로그래밍에서는 매크로를 활용하면 변수의 이름 자체를 문자열로 출력할 수 있습니다. 이는 # 연산자(문자열화 연산자, Stringize Operator)를 사용하는 간단한 기법으로, 디버깅이나 로그 작성 시 유용하게 활용됩니다.예제 코드#include <stdio.h> #define VariableName(name) #name int main() { int name; char ch; printf(변수 이름 : %s, VariableName(name)); printf(\n변수 이름 : %s,

  8. C언어 다차원 배열의 선언과 초기화 방법 완벽 정리

    배열의 기본 개념배열(Array)은 동일한 자료형의 요소들이 연속된 메모리 공간에 나란히 저장되어 있는 자료구조입니다. 가장 낮은 메모리 주소는 첫 번째 요소에 대응하고, 가장 높은 주소는 마지막 요소에 대응합니다. 배열의 인덱스는 항상 0부터 시작하며, 마지막 인덱스는 배열 크기 - 1이 됩니다. 또한 배열의 크기는 반드시 0보다 큰 정수로 지정해야 합니다.간단한 예를 통해 확인해 보겠습니다.배열 크기 = 10일 때 첫 번째 인덱스 = 0 마지막 인덱스 = 배열 크기 - 1 = 10 - 1 = 9다차원 배열이란?다차원 배열(Mul

  9. C 언어에서 가변 크기 배열(VLA) 초기화 방법 완벽 정리

    가변 크기 배열(VLA)이란?가변 크기 배열(Variable Sized Array, VLA)은 컴파일 시점이 아니라 실행 시점(런타임)에 길이가 결정되는 데이터 구조입니다. 일반적인 정적 배열은 선언 시점에 상수로 크기를 지정해야 하지만, 가변 크기 배열은 사용자 입력이나 계산 결과처럼 실행 중에 결정되는 값을 배열의 크기로 사용할 수 있습니다.이러한 배열은 수치 알고리즘 프로그래밍을 크게 단순화해 주며, 배열 크기를 미리 알 수 없는 상황에서 매우 유용합니다. C99 표준부터 가변 크기 배열이 정식으로 지원되었습니다.C에서 가변

  10. C/C++에서 세 번째 변수 없이 두 변수의 값 교환하기

    다음은 두 변수의 값을 서로 맞바꾸는(swap) 방법을 보여주는 예제입니다. 예제 #include <stdio.h> int main() {    int a,b;    printf("Enter the value of a : ");    scanf("%d", &a);    printf("\nEnter the value of b : ");    scanf("%d&quo

  11. C/C++에서 전역 변수와 정적 변수가 기본값으로 초기화되는 이유

    C/C++에서 전역 변수(global variable)와 정적 변수(static variable)가 자동으로 기본값, 즉 0으로 초기화되는 이유는 크게 두 가지입니다. 첫째, C와 C++ 표준에서 이를 명확히 규정하고 있기 때문입니다. 둘째, 프로그램 시작 시점에 메모리를 0으로 채우는 작업은 컴파일 시점이나 로딩 시점에 처리되므로 런타임에 추가 비용이 거의 발생하지 않기 때문입니다. 컴파일러 관점에서 보면 정적 변수와 전역 변수는 생성된 오브젝트 코드에서 동일하게 취급됩니다. 두 변수 모두 실행 파일의 .bss 섹션에 할당되며,

  12. C/C++에서 산술 연산자 없이 두 정수 더하기 – 비트 연산 원리와 예제

    프로그래밍을 하다 보면 + 연산자를 사용하지 않고 두 수를 더해야 하는 경우가 있습니다. 이 글에서는 C/C++에서 비트 연산자(XOR, AND, 시프트)만을 활용해 두 정수의 합을 구하는 방법을 예제와 함께 살펴보겠습니다.예제 코드#include <iostream> using namespace std; int add(int val1, int val2) {     while (val2 != 0) {         

  13. C/C++ 전위 증가(++i)와 후위 증가(i++) 연산자의 개념과 차이

    증감 연산자란 무엇인가? 증가 연산자(Increment Operator)는 변수의 값을 1만큼 증가시키는 연산자이며, 감소 연산자(Decrement Operator)는 그 반대로 변수의 값을 1만큼 감소시킵니다. C와 C++에서는 각각 ++와 -- 기호로 표현하며, 연산자를 변수 앞에 두느냐 뒤에 두느냐에 따라 전위(prefix) 방식과 후위(postfix) 방식으로 나뉩니다. 전위 증가 연산자 (++i) 변수에 값을 대입하기 전에 먼저 값을 1 증가시킵니다. 즉, 증가된 새로운 값이 곧바로 연산에 사용됩니다. 후위 증가 연산자

  14. C/C++에서 정적(Static) 변수는 메모리 어디에 저장될까?

    정적(static) 변수는 프로그램이 실행되는 동안 계속 메모리에 유지되는 변수입니다. 즉, 수명(lifetime)이 프로그램 전체 실행 기간과 같습니다. 이는 자동(automatic) 변수와 대비되는데, 자동 변수는 해당 함수가 실행 중일 때만 메모리에 존재하며 함수가 종료되면 소멸합니다.정적 변수의 저장 위치: 데이터 세그먼트정적 변수는 메모리의 데이터 세그먼트(data segment)에 저장됩니다. 데이터 세그먼트는 프로그램의 가상 주소 공간(virtual address space)을 구성하는 영역 중 하나입니다.데이터 세그먼

  15. g++과 gcc의 차이점 완벽 정리 – 언제 어떤 컴파일러를 사용해야 할까?

    리눅스 환경에서 C 또는 C++ 프로그램을 개발하다 보면 gcc와 g++이라는 두 가지 컴파일러를 자주 접하게 됩니다. 두 도구는 이름이 비슷해 혼동하기 쉽지만, 실제로는 동작 방식과 용도에 중요한 차이가 있습니다. 이 글에서는 각 컴파일러의 특징과 사용 예제, 그리고 핵심 차이점까지 한눈에 정리해 드립니다. g++이란? GNU C++ Compiler(g++)는 리눅스에서 C++ 프로그램을 컴파일하기 위해 사용되는 컴파일러입니다. 가장 큰 특징은 .c 확장자와 .cpp 확장자를 가진 파일을 모두 C++ 코드로 취급하여 컴파일한다는

  16. C/C++에서 size_t 변수를 printf로 출력하는 올바른 방법

    C 언어에서 size_t 타입의 변수를 출력할 때는 서식 지정자 %zu를 사용하는 것이 올바른 방법입니다. 물론 %d를 사용해도 컴파일러에 따라 오류가 발생하지 않고 정상적으로 출력되는 것처럼 보일 수 있습니다. 하지만 이는 이식성(portability) 측면에서 위험한 방식이며, 특히 32비트와 64비트 환경 사이에서 예기치 않은 결과를 초래할 수 있습니다.%zu 형식 지정자를 살펴보면 다음과 같습니다.z: 길이 수정자(length modifier)로, size_t 타입임을 나타냅니다.u: 부호 없는 정수(unsigned) 타입으

  17. C/C++에서 extern 키워드를 사용하는 방법: 전역 변수 선언부터 extern "C"까지

    외부 변수(External Variable)란?외부 변수(external variable)는 흔히 전역 변수(global variable)라고도 불립니다. 이러한 변수는 함수 외부에서 정의되며, 프로그램 실행 전반에 걸쳐 어디서든 접근할 수 있습니다. extern 키워드는 바로 이 외부 변수를 선언하고 정의할 때 사용됩니다.또한 extern C 구문은 C 언어로 작성되어 컴파일된 함수를 C++ 코드에서 선언할 때 사용합니다. 이를 활용하면 C++ 프로젝트 안에서 기존의 C 라이브러리를 그대로 가져다 쓸 수 있습니다.extern의 기

  18. C/C++ 참조(Reference)와 포인터(Pointer)의 차이점과 사용 기준 완벽 정리

    참조 변수(Reference Variable)참조 변수는 이미 존재하는 변수에 붙이는 다른 이름(별칭)입니다. 한 번 어떤 변수와 연결되면 다른 변수를 가리키도록 바꿀 수 없으며, 선언과 동시에 반드시 초기화해야 합니다. 또한 참조 변수는 NULL 값을 가질 수 없습니다. 참조 변수를 선언할 때는 & 연산자를 사용합니다.참조 변수의 기본 문법은 다음과 같습니다.datatype variable_name; // 일반 변수 선언 datatype& refer_var = variable_name; /

  19. C/C++에서 배열의 길이를 구하는 방법 총정리

    C나 C++에서는 문자열처럼 배열의 길이를 자동으로 알려주는 기능이 없기 때문에, 프로그래머가 직접 계산해야 하는 경우가 많습니다. 이 글에서는 배열의 길이(요소 개수)를 구하는 대표적인 두 가지 방법을 예제 코드와 함께 자세히 살펴보겠습니다.방법 1 – sizeof 연산자 사용하기가장 널리 쓰이는 방법은 sizeof 연산자를 활용하는 것입니다. sizeof는 메모리에서 차지하는 바이트 크기를 반환하므로, 전체 배열의 크기를 배열 요소 하나의 크기로 나누면 배열의 길이를 구할 수 있습니다.다음은 C++에서 sizeof 연산자를 사용

  20. C/C++에서 goto문 사용법과 예제 총정리

    goto문은 프로그램의 제어 흐름을 특정 레이블(label)로 즉시 이동시키는 점프 문(jump statement)입니다. 하지만 goto문을 남용하면 프로그램의 흐름이 복잡해지고 코드를 이해하기 어려워지기 때문에, 실무에서는 사용을 지양하는 것이 일반적입니다.goto문 기본 문법goto문의 기본적인 문법 구조는 다음과 같습니다.goto label; . . . label: statements;goto 키워드 뒤에 이동하고자 하는 레이블 이름을 지정하면, 프로그램 실행 중 해당 레이블 위치로 제어가 곧바로 넘어갑니다.C++에서의 go

Total 1443 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:8/73  20-컴퓨터/Page Goto:1 2 3 4 5 6 7 8 9 10 11 12 13 14