Computer 15

C언어 extern과 static의 차이점

C언어에서 extern과 static은 변수나 함수의 저장소 클래스라고 부르는 것들입니다. 저장소 클래스란 변수나 함수가 메모리에 어떻게 저장되고, 어떤 범위와 수명을 가지고, 어떤 링크를 가지는지를 결정하는 것입니다. extern과 static은 이러한 저장소 클래스 중에서도 링크라는 속성에 영향을 주는 키워드입니다. 링크란 변수나 함수가 다른 파일에서도 참조될 수 있는지를 결정하는 것입니다. 링크에는 외부 링크, 내부 링크, 없음이라는 세 가지 종류가 있습니다. 외부 링크는 다른 파일에서도 참조할 수 있음을 의미하고, 내부 링크는 같은 파일에서만 참조할 수 있음을 의미합니다. 없음은 링크가 존재하지 않음을 의미합니다. extern과 static은 이러한 링크를 지정하는 역할을 합니다. extern은 ..

Computer/C, C++ 2023.07.17

C++ 언어 강력한 도구인 클래스의 멤버와 접근 제한자

C++언어 클래스란 무엇인가? C++언어에서 클래스란 객체지향 프로그래밍의 핵심 개념 중 하나로, 데이터와 기능을 하나의 단위로 묶어서 캡슐화하는 방법입니다. 클래스는 객체를 생성하기 위한 틀이며, 객체는 클래스의 인스턴스라고도 합니다. 클래스를 정의할 때는 클래스의 이름과 멤버 변수, 멤버 함수를 선언합니다. 멤버 변수와 멤버 함수란 무엇인가? 멤버 변수란 클래스가 가지고 있는 속성을 나타내는 변수이며, 멤버 함수란 클래스가 수행할 수 있는 동작을 나타내는 함수입니다. 예를 들어, 사람이라는 클래스를 정의한다면, 이름, 나이, 성별 등이 멤버 변수가 될 수 있고, 걷다, 말하다, 먹다 등이 멤버 함수가 될 수 있습니다. 접근 제한자란 무엇인가? 클래스의 멤버 변수와 멤버 함수에는 접근 제한자라는 것을 ..

Computer/C, C++ 2023.07.15

C언어에서 클래스를 사용하는 방법

이번에는 C언어에서 클래스를 사용하는 방법에 대해 알아보겠습니다. 클래스란 객체지향 프로그래밍에서 데이터와 함수를 하나의 단위로 묶어서 관리하는 개념입니다. C언어는 기본적으로 객체지향 언어가 아니기 때문에 클래스를 직접 정의할 수는 없습니다. 하지만 구조체와 함수 포인터를 이용하면 클래스와 비슷한 효과를 낼 수 있습니다. 예시를 통해 살펴보겠습니다. 예를 들어, 사람이라는 클래스를 만들고 싶다고 가정해봅시다. 사람은 이름, 나이, 성별과 같은 속성과 말하기, 걷기, 먹기와 같은 행동을 가지고 있습니다. 이를 C언어로 표현하려면 다음과 같이 구조체와 함수 포인터를 정의할 수 있습니다. // 사람 구조체 정의 typedef struct person { char* name; // 이름 int age; // ..

Computer/C, C++ 2023.07.13

C 언어 복합 대입 연산자

복합 대입 연산자는 기본적인 산술 연산자와 대입 연산자를 결합한 것입니다. 예를 들어, a = a + b 라는 식은 a += b 로 간단하게 표현할 수 있습니다. 이렇게 하면 코드가 짧아지고 가독성이 높아집니다. 복합 대입 연산자는 다음과 같은 종류가 있습니다. += 왼쪽 피연산자에 오른쪽 피연산자를 더하고 그 결과를 왼쪽 피연산자에 대입합니다. -= 왼쪽 피연산자에서 오른쪽 피연산자를 빼고 그 결과를 왼쪽 피연산자에 대입합니다. *= 왼쪽 피연산자에 오른쪽 피연산자를 곱하고 그 결과를 왼쪽 피연산자에 대입합니다. /= 왼쪽 피연산자를 오른쪽 피연산자로 나누고 그 몫을 왼쪽 피연산자에 대입합니다. %= 왼쪽 피연산자를 오른쪽 피연산자로 나누고 그 나머지를 왼쪽 피연산자에 대입합니다. = 왼쪽 피연산자의 ..

Computer/C, C++ 2023.07.11

C언어 포인터

포인터는 C언어에서 가장 중요한 개념 중 하나입니다. 포인터는 메모리 주소를 저장하는 변수입니다. 메모리 주소는 메모리에서 특정 위치를 나타내는 숫자입니다. 포인터를 사용하면 메모리에서 특정 위치에 있는 데이터를 쉽게 참조할 수 있습니다. 포인터를 사용하면 더 효율적인 코드를 작성할 수 있습니다. 예를 들어, 배열을 사용하면 배열의 모든 요소를 하나씩 접근해야 합니다. 하지만 포인터를 사용하면 배열의 첫 번째 요소의 주소를 저장한 후 그 주소를 사용하여 배열의 모든 요소에 빠르게 접근할 수 있습니다. 포인터는 또한 더 유연한 코드를 작성할 수 있습니다. 예를 들어, 함수에 포인터를 전달하면 함수는 함수 내에서 포인터를 사용하여 전달받은 데이터를 참조할 수 있습니다. 이로써 함수는 전달받은 데이터를 변경하..

Computer/C, C++ 2023.07.06

공유 메모리 이해하기

공유 메모리는 컴퓨터 시스템에서 여러 프로세스가 동시에 접근할 수 있는 메모리 영역입니다. 공유 메모리를 사용하면 프로세스 간에 데이터를 쉽게 공유하고, 프로세스 간 통신을 개선할 수 있습니다. 공유 메모리를 사용하려면 먼저 공유 메모리 영역을 생성해야 합니다. 공유 메모리 영역을 생성하는 방법은 운영 체제마다 다릅니다. 공유 메모리 영역을 생성한 후에는 프로세스 간에 데이터를 공유할 수 있습니다. 데이터를 공유하는 방법에는 여러 가지가 있습니다. 가장 일반적인 방법은 공유 메모리 영역의 주소를 프로세스에 전달하는 것입니다. 프로세스는 전달받은 주소를 사용하여 공유 메모리 영역에 저장된 데이터에 액세스할 수 있습니다. 공유 메모리는 프로세스 간에 데이터를 공유하는 데 매우 유용한 도구입니다. 공유 메모리..

Computer 2023.07.05

쓰레드(Thread)란 무엇이고, 어떻게 사용되는가?

쓰레드(Thread)란 무엇입니까? 쓰레드는 컴퓨터 프로그래밍에서 하나의 작업 단위입니다. 쓰레드는 프로세스 내의 다른 쓰레드와 함께 또는 독립적으로 실행될 수 있습니다. 쓰레드는 프로세스 내의 다른 쓰레드와 공유하는 메모리 공간을 가지고 있지만, 각 쓰레드는 자체 스택과 레지스터를 가지고 있습니다. 쓰레드는 프로세스보다 효율적입니다. 쓰레드는 프로세스와 동일한 메모리 공간을 공유하기 때문에 프로세스를 생성하는 것보다 훨씬 빠르게 생성할 수 있습니다. 또한, 쓰레드는 프로세스보다 훨씬 더 가볍기 때문에 프로세스보다 더 많은 수의 쓰레드를 생성할 수 있습니다. 쓰레드는 프로그래밍을 더 쉽게 만듭니다. 쓰레드는 프로세스보다 프로그래밍하기가 더 쉽습니다. 쓰레드는 프로세스와 동일한 메모리 공간을 공유하기 때문..

Computer 2023.07.04

C언어 if문, while문, for문

C언어는 조건문과 반복문을 사용하여 코드를 작성합니다. 조건문은 특정 조건에 따라 코드를 실행하거나 실행하지 않도록 하는 기능이고, 반복문은 특정 조건을 만족하는 동안 코드를 반복해서 실행하는 기능입니다. if문 if문은 특정 조건에 따라 코드를 실행하거나 실행하지 않도록 하는 기능입니다. if문의 기본 구조는 다음과 같습니다. if (조건) { 코드1 } else { 코드2 } 조건이 참이면 코드1이 실행되고, 조건이 거짓이면 코드2가 실행됩니다. 예를 들어, 10보다 작은 정수를 입력받아 짝수이면 "짝수입니다."를 출력하고, 홀수이면 "홀수입니다."를 출력하는 프로그램을 작성해 보겠습니다. #include int main() { int number; printf("정수를 입력하세요: "); scanf..

Computer/C, C++ 2023.06.29

PROFINET과 PROFIBUS 란?

프로피버스(profibus)와 프로피넷(profinet)은 모두 산업용 네트워크 프로토콜입니다. 프로피버스는 1989년에 개발되었으며, 필드버스 기술을 기반으로 합니다. 프로피버스는 저속 통신을 지원하며, 주로 제어 및 모니터링 애플리케이션에 사용됩니다. 프로피넷은 1995년에 개발되었으며, 이더넷 기술을 기반으로 합니다. 프로피넷은 고속 통신을 지원하며, 다양한 장비와 시스템을 연결할 수 있습니다. 프로피넷보다 프로피버스가 먼저 개발되었고, 프로피넷은 프로피버스보다 더 많은 기능을 제공합니다. 프로피버스의 주요 기능은 다음과 같습니다. 데이터의 실시간 전송 다양한 장치의 통신 네트워크의 확장성 보안성 프로피넷의 주요 기능은 다음과 같습니다. 프로피버스의 모든 기능 더 빠른 데이터 전송 속도 더 많은 장..

Computer 2023.06.28

Modbus TCP/IP와 Modbus RTU의 차이점

Modbus TCP/IP와 Modbus RTU는 모두 산업용 장비를 제어하는 데 사용되는 통신 프로토콜입니다. 그러나 두 프로토콜에는 몇 가지 중요한 차이점이 있습니다. Modbus TCP/IP는 TCP/IP 프로토콜을 기반으로 하는 반면, Modbus RTU는 시리얼 통신을 기반으로 합니다. 즉, Modbus TCP/IP는 Modbus RTU보다 더 많은 기능을 제공합니다. 예를 들어, Modbus TCP/IP는 Modbus RTU보다 더 많은 장치를 연결할 수 있으며, 더 긴 거리에서 통신할 수 있습니다. 또한, Modbus TCP/IP는 Modbus RTU보다 보안성이 더 뛰어납니다. 그러나 Modbus TCP/IP는 Modbus RTU보다 설정하기 더 어려울 수 있습니다. 또한, Modbus TC..

Computer 2023.06.22