본문 바로가기
GD's IT Lectures : 기초부터 시리즈/C, C++ 기초부터 ~

[C/C++ 프로그래밍] 4. 자료형

by GDNGY 2023. 5. 15.

Chapter 4. 자료형

이 장에서는 데이터 타입이 무엇인지, 왜 필요한지, 그리고 어떻게 분류되는지에 대해 배울 수 있습니다. 또한 기본적인 데이터 타입으로서의 정수형, 실수형, 문자형, 논리형, 복합 데이터 타입인 배열, 구조체, 공용체, 열거형에 대해서 설명합니다. 그리고 사용자 정의 자료형에 대해 알아보며, 메모리와 변수와의 관계를 이해하고, 다양한 자료형을 사용하는 방법을 배워보겠습니다. 

 


 

반응형

 


[Chapter 4. 자료형]


4.1. 자료형의 이해

4.1.1. 자료형이란?

4.1.2. 자료형의 필요성

4.1.3. 자료형의 분류

 

4.2. 기본 자료형

4.2.1. 정수형(int, long, short)

4.2.2. 실수형(float, double)

4.2.3. 문자형(char)

4.2.4. 논리형(bool)

 

4.3. 복합 자료형

4.3.1. 배열

4.3.2. 구조체(struct)

4.3.3. 공용체(union)

4.3.4. 열거형(enum)

 

4.4. 사용자 정의 자료형

4.4.1. typedef의 사용

4.4.2. 클래스와 객체

 

4.5. 자료형 변환

4.5.1. 암묵적 변환

4.5.2. 명시적 변환

 

4.6. 자료형과 메모리

4.6.1. 자료형의 크기와 메모리

4.6.2. 메모리 구조와 변수의 위치

 

4.7. 자료형을 활용한 프로그래밍

4.7.1. 간단한 데이터 처리 프로그램 작성

4.7.2. 사용자의 입력을 활용한 프로그램 작성

 


4.1. 자료형의 이해

자료형은 데이터의 종류를 정의하고 메모리 할당을 결정하는 규칙입니다. 이는 기본 자료형과 복합 자료형으로 분류되며, 데이터 처리와 메모리 관리에 필수적입니다.

4.1.1. 자료형이란?

자료형이란 간단하게 말해서 데이터의 종류를 말합니다. 쉽게 말해, 변수가 어떤 종류의 데이터를 담을 수 있는지, 그리고 그 데이터가 얼마나 많은 메모리 공간을 차지하는지를 결정하는 역할을 합니다. 예를 들어, 'int'라는 자료형은 정수를 저장하며, 일반적으로 4바이트의 메모리 공간을 차지합니다.

 

[예제]

int num = 10; // C 언어에서 int 자료형 변수 선언과 초기화

 

4.1.2. 자료형의 필요성

자료형이 없다면 컴퓨터는 데이터를 어떻게 처리할지 알 수 없습니다. 데이터는 단순한 비트의 모음이기 때문에, 자료형이 데이터에 의미를 부여하며, 이를 통해 컴퓨터는 데이터를 올바르게 해석하고 처리할 수 있습니다. 또한, 자료형에 따라 할당되는 메모리 크기가 결정되므로, 메모리를 효율적으로 관리하는 데에도 중요한 역할을 합니다.

 

4.1.3. 자료형의 분류

자료형은 크게 기본 자료형과 복합 자료형으로 분류할 수 있습니다. 기본 자료형은 정수형, 실수형, 문자형, 논리형 등이 있으며, 복합 자료형은 배열, 구조체, 공용체, 열거형 등이 있습니다.

기본 자료형 : 

int integerNum = 10;      // 정수형
float floatNum = 10.5;    // 실수형
char character = 'A';     // 문자형
bool isTrue = true;       // 논리형

 

복합 자료형 :

// 배열
int arrayNum[5] = {1, 2, 3, 4, 5};

// 구조체
struct Student {
  char name[50];
  int age;
  float grade;
};
Student student1;

// 공용체
union Data {
  int i;
  float f;
  char str[20];
};
Data data1;

// 열거형
enum Color {red, green, blue};
Color color = red;

 

위 코드들은 기본 자료형과 복합 자료형의 선언 예제들입니다. 각 자료형에 따라 저장할 수 있는 데이터의 종류와 크기가 결정됩니다. C++ 프로그래밍에서는 이러한 자료형들을 적절히 활용하여 효율적인 프로그램을 작성할 수 있습니다. 

 


4.2. 기본 자료형

우리는 데이터를 처리하려면 먼저 그 데이터의 형태를 알아야 합니다. 이 형태를 '자료형'이라고 합니다. C/C++에는 여러 가지 기본 자료형이 있는데, 각각의 특징을 이해하고 이를 적절하게 활용하는 것이 중요합니다.

4.2.1. 정수형(int, long, short)

정수형 자료형에는 int, long, short 등이 있습니다. 이들은 각각 표현할 수 있는 정수의 범위가 다릅니다. 예를 들어, short는 보통 2바이트를 사용하여 -32768에서 32767까지의 정수를 표현할 수 있습니다. int는 보통 4바이트를 사용하여 약 -21억에서 21억까지의 정수를 표현할 수 있습니다.

 

[정수형 표현 범위]

  • short (2 bytes) : -32,768 ~ 32,767
  • unsigned short (2 bytes) : 0 ~ 65,535
  • int (4 bytes) : -2,147,483,648 ~ 2,147,483,647
  • unsigned int (4 bytes) : 0 ~ 4,294,967,295
  • long (4 bytes on 32-bit systems) : -2,147,483,648 ~ 2,147,483,647
  • long (8 bytes on 64-bit systems) :  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • unsigned long (4 bytes on 32-bit systems) : 0 ~ 4,294,967,295
  • unsigned long (8 bytes on 64-bit systems) : 0 ~ 18,446,744,073,709,551,615

[예제]

short s = 100;
int i = 10000;
long l = 100000L;


4.2.2. 실수형(float, double)

실수형 자료형에는 float, double 등이 있습니다. 이들은 소수점 아래의 값을 표현할 수 있습니다. float는 4바이트를 사용하며, double은 보통 8바이트를 사용하여 더 넓은 범위와 더 정확한 값을 표현할 수 있습니다.

 

[실수형 표현 범위]

  • float (4 bytes) : +/- 3.4e +/- 38 (~7 digits)
  • double (8 bytes) : +/- 1.7e +/- 308 (~15 digits)
  • long double (8 or 12 bytes) : 2배보다 약간 큰 범위와 정밀도(slightly bigger range and precision than double)

[예제]

float f = 0.1f;
double d = 0.1;


4.2.3. 문자형(char)

문자형 자료형은 char이며, 단일 문자를 표현하는 데 사용됩니다. C/C++에서는 ASCII 코드를 사용하여 문자를 숫자로 변환하므로, char는 사실상 작은 정수형이라고 볼 수 있습니다.

 

[문자형 표현 범위]

  • char (1 byte) : -128 ~ 127
  • unsigned char (1 byte) : 0 ~ 255

 

[예제]

char c = 'A';


4.2.4. 논리형(bool)

논리형 자료형은 bool이며, 참(true)과 거짓(false)을 표현하는 데 사용됩니다. 조건문이나 반복문 등에서 조건을 검사할 때 매우 유용하게 사용됩니다.

 

[논리형 표현 범위]

  • bool (typically 1 byte) : true or false

[예제]

bool b = true;


각 자료형은 용도와 필요에 따라 선택하여 사용합니다. 자료형에 따라 할당받는 메모리 공간과 저장할 수 있는 값의 범위가 달라지므로, 프로그램의 목적과 필요성에 맞게 적절한 자료형을 선택하는 것이 중요합니다. 


4.3. 복합 자료형

복합 자료형은 여러 데이터를 묶어 한 개의 자료형으로 표현하는 것입니다. 배열은 같은 타입의 여러 데이터를 저장하며, 구조체는 다른 타입의 데이터를 하나로 묶습니다. 공용체는 여러 멤버 중 하나만 저장할 수 있으며, 열거형은 상수 그룹을 정의합니다. 이들은 데이터의 구조화와 효율적인 관리를 가능하게 합니다.

4.3.1. 배열

배열은 같은 타입의 데이터를 여러 개 연속적으로 저장할 수 있는 자료형입니다. 배열의 각 요소는 인덱스를 통해 접근할 수 있습니다. 인덱스는 0부터 시작하며, 배열의 크기보다 큰 인덱스에 접근하려는 시도는 undefined behavior를 발생시킵니다.

[예제]

int arr[5] = {1, 2, 3, 4, 5};  // int형 배열 선언과 초기화
cout << arr[0];  // 출력: 1

 

4.3.2. 구조체(struct)

구조체는 서로 다른 타입의 데이터를 한데 묶어 새로운 타입을 만드는 방법입니다. 이를 통해 관련 있는 데이터를 하나의 집합으로 취급할 수 있습니다.

 

[예제]

struct Student {  // Student라는 이름의 구조체 정의
    char name[20];
    int age;
    double grade;
};

Student s = {"John", 20, 4.5}; // Student 타입 변수 s 생성 및 초기화
cout << s.name << " " << s.age << " " << s.grade;  // 출력: John 20 4.5


4.3.3. 공용체(union)

공용체는 여러 멤버 중 한 개의 멤버만을 저장할 수 있는 자료형입니다. 공용체의 모든 멤버가 같은 메모리 공간을 공유하므로, 한 번에 하나의 멤버만을 사용할 수 있습니다.

[예제]

union Data {   // Data라는 이름의 공용체 정의
    int i;
    float f;
    char str[20];
};

Data d;
d.i = 10; // i에 값 할당
cout << d.i;  // 출력: 10
d.f = 20.5; // f에 값 할당. 이 시점에서 i의 값은 사라짐
cout << d.f;  // 출력: 20.5


4.3.4. 열거형(enum)

열거형은 서로 관련 있는 상수들을 묶어 새로운 타입을 만드는 방법입니다. 열거형은 코드의 가독성을 높여주고, 실수를 줄일 수 있습니다.

[예제]

enum Week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};  // Week라는 이름의 열거형 정의

Week today = Mon;
if (today == Mon) {
    cout << "It's Monday!";  // 출력: It's Monday!
}

4.4. 사용자 정의 자료형

C와 C++에서는 프로그래머가 자신만의 자료형을 정의할 수 있는 방법을 제공합니다. 이를 사용자 정의 자료형이라고 합니다.

4.4.1. typedef의 사용

typedef는 'type definition'의 약자로, C와 C++에서 기존의 자료형에 새로운 이름을 붙여서 사용할 수 있게 해주는 키워드입니다. typedef를 사용하여 자료형을 재정의하면, 그 이후에는 새로운 이름으로 자료형을 선언할 수 있습니다. 이를 사용하면 코드의 가독성을 향상하고, 특정한 데이터 타입에 대한 변경을 쉽게 관리할 수 있습니다.

 

간단한 예를 들어보겠습니다. 아래의 코드는 int형에 대해 'age'라는 이름을 추가로 붙인 것입니다.

 

[예제]

typedef int age;
age myAge = 20;

 

여기서 age는 int와 동일한 자료형이지만, 이름이 age로 바뀌었습니다. 따라서 myAge는 int형이고, age는 int형의 별칭(alias)입니다.

 

typedef는 복잡한 자료형에 대해서도 사용할 수 있습니다. 예를 들어, 구조체에 대해서 typedef를 사용하면 좀 더 편리하게 코드를 작성할 수 있습니다.

 

[예제]

typedef struct {
    int x;
    int y;
} Point;

Point p1;
p1.x = 10;
p1.y = 20;

 

여기서 Point는 struct {int x; int y;}의 별칭이며, p1은 Point형의 변수입니다. typedef를 사용하면 구조체의 선언과 동시에 별칭을 지정할 수 있어서 편리합니다.

 

typedef는 배열이나 함수 포인터 등에도 사용할 수 있습니다. 예를 들어, int형의 배열에 대한 포인터에 typedef를 사용하면 다음과 같습니다.

 

[예제]

typedef int (*arrPointer)[10];

 

여기서 arrPointer는 크기가 10인 int 배열에 대한 포인터의 별칭입니다. 이렇게 복잡한 자료형에 typedef를 사용하면, 코드를 이해하고 작성하는데 도움이 됩니다.

 

4.4.2. 클래스와 객체

C++에서 클래스(class)는 사용자 정의 데이터 타입으로, 데이터와 함수를 하나로 묶어 객체 지향 프로그래밍의 기본 구성 요소입니다. 클래스는 객체의 청사진으로, 클래스를 바탕으로 생성된 객체는 클래스가 정의한 데이터와 함수를 가지게 됩니다.

 

클래스의 선언은 다음과 같은 형태를 가집니다.

 

[예제]

class ClassName {
public:
    // 멤버 변수
    int variable;

    // 멤버 함수
    void function() {
        // 함수 내용
    }
};

 

여기서 ClassName은 클래스의 이름이며, public: 이하의 내용은 클래스의 멤버(멤버 변수와 멤버 함수)를 정의하는 부분입니다.

 

클래스를 이용하여 객체를 생성하는 방법은 다음과 같습니다.

 

[예제]

ClassName objectName;

 

이제 objectName은 ClassName 클래스의 객체가 되어, ClassName 클래스가 정의한 멤버 변수와 멤버 함수를 사용할 수 있습니다.

 

예를 들어, Person이라는 클래스를 정의하고, 그 안에 name이라는 문자열 변수와 introduce()라는 함수를 정의해 보겠습니다.

[예제]

#include <iostream>
#include <string>

class Person {
public:
    std::string name;

    void introduce() {
        std::cout << "Hello, my name is " << name << std::endl;
    }
};

 

이제 Person 클래스의 객체를 생성하고 사용해 보겠습니다.

[예제]

int main() {
    Person person;
    person.name = "Alice";
    person.introduce();  // 출력: "Hello, my name is Alice"
    
    return 0;
}


person은 Person 클래스의 객체로, Person 클래스가 정의한 name 변수와 introduce() 함수를 사용할 수 있습니다. 이처럼 클래스와 객체를 이용하면 데이터와 함수를 하나로 묶어 관리할 수 있어, 코드의 구조화와 재사용성이 향상됩니다. 

 


4.5. 자료형 변환

자료형 변환(type casting)은 한 데이터 타입을 다른 데이터 타입으로 변환하는 과정을 의미합니다. 프로그램을 작성하다 보면 종종 데이터 타입을 변환해야 할 필요가 생깁니다. 예를 들어, 정수와 실수를 연산하거나, 정밀도가 높은 데이터 타입을 정밀도가 낮은 데이터 타입으로 변환하는 등의 상황에서 자료형 변환이 필요합니다.

4.5.1. 암묵적 변환

암묵적 변환(implicit type conversion), 또는 자동 형 변환은 한 자료형에서 다른 자료형으로의 변환이 프로그래머에 의해 명시적으로 지시되지 않고, 컴파일러에 의해 자동으로 수행되는 것을 의미합니다. 이러한 변환이 가능한 이유는 프로그래밍 언어의 특성과 규칙 때문입니다.

 

예를 들어, 아래는 C 언어에서의 암묵적 변환 예제입니다.

 

[예제]

int integer_var = 10;      // 정수형 변수
double double_var;         // 실수형 변수

double_var = integer_var;  // 정수형에서 실수형으로의 암묵적 변환

 

위 코드에서 정수형 변수 integer_var는 실수형 변수 double_var로 자동으로 변환됩니다. 이때, integer_var의 값 10은 실수 10.0으로 변환되어 double_var에 저장됩니다.

 

이와 같은 변환이 이루어지는 이유는 실수형이 정수형보다 넓은 범위의 값을 표현할 수 있기 때문입니다. 이 경우, 데이터 손실 없이 안전하게 변환이 이루어질 수 있습니다.

 

하지만, 암묵적 변환이 항상 안전하게 이루어지는 것은 아닙니다. 예를 들어, 넓은 범위의 값을 표현하는 데이터 타입에서 좁은 범위의 값을 표현하는 데이터 타입으로 변환하는 경우, 데이터 손실이 발생할 수 있습니다.

 

[예제]

double double_var = 3.14;  // 실수형 변수
int integer_var;           // 정수형 변수

integer_var = double_var;  // 실수형에서 정수형으로의 암묵적 변환

 

위 코드에서는 double_var의 값 3.14가 정수형 변수 integer_var로 변환되면서, 소수점 아래의 값이 잘려나가고 integer_var에는 3만 저장됩니다. 이 경우, 원래의 값과는 다른 값이 저장되기 때문에 데이터 손실이 발생합니다.

 

암묵적 변환이 편리한 경우도 있지만, 항상 원하는 결과를 가져오지는 않습니다. 때문에 프로그래밍을 할 때는 데이터 타입과 변환에 대해 항상 주의 깊게 생각해야 합니다.

 

4.5.2. 명시적 변환

명시적 변환(explicit conversion)은 프로그래머가 직접 자료형 변환을 지시하는 것을 말합니다. C와 C++ 언어에서는 이를 '형 변환(type casting)'이라고 부릅니다. 명시적 변환을 사용하면 프로그래머가 데이터 손실에 대한 책임을 질 수 있습니다. 다만, 이러한 변환이 항상 안전한 것은 아니므로 신중하게 사용해야 합니다. C 언어에서는 캐스트 연산자(cast operator)를 이용하여 명시적 변환을 수행할 수 있습니다. C++에서는 static_cast, dynamic_cast, const_cast, reinterpret_cast 등의 캐스트 연산자를 제공합니다.

 

아래는 C언어에서의 명시적 변환 예제입니다.

 

[예제]

double double_var = 3.141592;   // 실수형 변수
int integer_var;                // 정수형 변수

integer_var = (int)double_var;  // 실수형에서 정수형으로의 명시적 변환

 

이 경우, double_var의 값은 3.141592이지만, (int) 형 변환 연산자를 사용하여 integer_var에 할당하면 integer_var의 값은 3이 됩니다. 즉, 소수점 이하의 값이 잘려나가게 됩니다.

 

C++에서는 두 가지 형태의 형 변환 연산자를 제공합니다.

  • C스타일 형 변환 : ()를 사용하여 형 변환을 수행하는 방식입니다.
  • C++스타일 형 변환 : static_cast, dynamic_cast, const_cast, reinterpret_cast을 사용하여 형 변환을 수행하는 방식입니다.

C++스타일 형 변환은 각기 다른 상황에서 사용됩니다.

  • static_cast : 가장 일반적인 형 변환을 수행합니다. 정수와 실수 사이의 변환, 열거형에서 정수로, void*에서 다른 포인터로의 변환 등을 할 수 있습니다.
double pi = 3.14;
int integer_pi = static_cast<int>(pi);  // 3

 

  • dynamic_cast : 주로 객체지향 프로그래밍에서 사용되며, 다형성(polymorphism)을 다룰 때 사용됩니다. 상속 관계에 있는 클래스 간의 포인터나 레퍼런스 형변환에 사용됩니다. 실행 시점(runtime)에 안전성을 확인하기 때문에, 이를 위해 RTTI(Runtime Type Information)를 활성화해야 합니다.
Base* b = new Derived();
Derived* d = dynamic_cast<Derived*>(b);  // 가능, 만약 b가 Derived 객체를 가리키지 않았다면 nullptr 반환

 

  • const_cast : const나 volatile한 성질을 제거할 때 사용합니다. const가 선언된 객체를 수정하려고 할 때 사용할 수 있지만, 실제로 const 객체의 값을 변경하려고 하면 정의되지 않은 동작(undefined behavior)을 일으킬 수 있습니다.
const int c = 10;
int* pc = const_cast<int*>(&c);
*pc = 11;  // 정의되지 않은 동작(undefined behavior)

 

  • reinterpret_cast : 매우 낮은 수준의 비트 단위로 형 변환을 수행합니다. 이 변환은 포인터를 정수로, 정수를 포인터로 변환하거나, 한 유형의 포인터를 다른 유형의 포인터로 변환할 때 사용됩니다. 이 형 변환은 알아보기 어렵고 오류를 발생시킬 가능성이 높기 때문에 신중하게 사용해야 합니다.
int i = 0x12345678;
char* pc = reinterpret_cast<char*>(&i);
// pc[0]은 0x78이 될 것입니다(리틀 엔디언 아키텍처에서)

 

이렇게 각각의 형 변환 연산자는 특정한 상황에 따라 사용되며, 프로그래머가 원하는 변환을 수행하도록 돕습니다.

 

프로그래밍에서 자료형 변환은 필수적인 부분이지만, 암묵적 변환과 명시적 변환 각각이 가진 장단점을 이해하고 적절히 사용해야 합니다.

 


4.6. 자료형과 메모리

자료형은 메모리 상에 데이터를 어떻게 저장하고 해석할지 결정합니다. 각 자료형은 메모리에 다른 크기를 차지하며, sizeof 연산자를 통해 확인 가능합니다. 또한, 변수의 종류(전역, 지역, 동적 할당 등)에 따라 저장되는 메모리 영역(데이터 영역, 스택, 힙 등)이 달라집니다.

4.6.1. 자료형의 크기와 메모리

컴퓨터에서 모든 데이터는 메모리에 저장됩니다. 각각의 자료형에 따라 메모리 상에 차지하는 크기가 다르게 됩니다. C/C++에서는 sizeof 연산자를 사용해 해당 자료형이나 객체가 메모리에서 차지하는 바이트 수를 알 수 있습니다.

[예제]

#include <iostream>

int main() {
    std::cout << "Size of int: " << sizeof(int) << " bytes" << std::endl;
    std::cout << "Size of float: " << sizeof(float) << " bytes" << std::endl;
    std::cout << "Size of double: " << sizeof(double) << " bytes" << std::endl;
    std::cout << "Size of char: " << sizeof(char) << " bytes" << std::endl;
    return 0;
}


이 프로그램은 각각의 기본 자료형이 메모리에서 차지하는 바이트 수를 출력합니다.


4.6.2. 메모리 구조와 변수의 위치

메모리는 크게 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 있습니다. 코드 영역에는 프로그램의 명령어들이 저장되고, 데이터 영역에는 전역 변수와 static 변수가 저장됩니다. 힙 영역은 동적 메모리 할당을 통해 관리되며, 스택 영역은 지역 변수와 함수 호출 정보가 저장됩니다.

 

[예제]

#include <iostream>

int global_var; // 데이터 영역

int main() {
    int local_var; // 스택 영역
    int* dynamic_var = new int; // 힙 영역

    std::cout << "Address of global_var: " << &global_var << std::endl;
    std::cout << "Address of local_var: " << &local_var << std::endl;
    std::cout << "Address of dynamic_var: " << dynamic_var << std::endl;

    delete dynamic_var; // 동적 할당 메모리 해제

    return 0;
}

 

이 프로그램은 전역 변수, 지역 변수, 동적 할당 변수의 메모리 주소를 출력합니다. 이를 통해 각 변수가 저장되는 메모리 영역을 확인할 수 있습니다.

 


4.7. 자료형을 활용한 프로그래밍

사용자의 입력을 받아 처리하고, 특정 로직에 따라 결과를 반환하는 프로그램을 작성하는 과정입니다. 이 과정에서는 간단한 데이터 처리 프로그램과 사용자의 입력을 활용한 프로그램을 작성하게 됩니다. 자료형의 이해와 적절한 활용은 여러 가지 문제를 효율적으로 해결하는 데 중요한 역할을 합니다.

 

4.7.1. 간단한 데이터 처리 프로그램 작성

자료형을 이해하고 사용하는 것은 프로그래밍의 핵심적인 부분입니다. 실제로 우리가 코드를 작성하면서 다루는 대부분의 문제는 어떤 형태의 데이터를 다루는 문제일 것입니다. 예를 들어, 숫자를 입력받아 더하는 프로그램을 작성해 봅시다.

 

[예제]

// C
#include <stdio.h>

int main() {
    int a, b;
    printf("두 숫자를 입력하세요: ");
    scanf("%d %d", &a, &b);
    int sum = a + b;
    printf("두 수의 합: %d\n", sum);
    return 0;
}

 

[예제]

// C++
#include <iostream>

int main() {
    int a, b;
    std::cout << "두 숫자를 입력하세요: ";
    std::cin >> a >> b;
    int sum = a + b;
    std::cout << "두 수의 합: " << sum << std::endl;
    return 0;
}

 

4.7.2. 사용자의 입력을 활용한 프로그램 작성

자료형과 함께 사용자의 입력을 받아 처리하는 것은 프로그래밍에서 중요한 요소입니다. 사용자의 입력을 자료형에 맞게 받아서 적절하게 처리하는 것을 연습해 봅시다. 문자열을 입력받아 출력하는 프로그램을 작성해 보겠습니다.

 

[예제]

// C

#include <stdio.h>

int main() {
    char name[100];
    printf("이름을 입력하세요: ");
    scanf("%s", name);
    printf("당신의 이름은 %s입니다.\n", name);
    return 0;
}

 

[예제]

// C++

#include <iostream>
#include <string>

int main() {
    std::string name;
    std::cout << "이름을 입력하세요: ";
    std::cin >> name;
    std::cout << "당신의 이름은 " << name << "입니다." << std::endl;
    return 0;
}

 

이렇게 자료형을 이해하고 사용자의 입력을 처리하는 방법을 알게 되었습니다. 다양한 형태의 데이터를 다루고, 이를 이용해 여러 가지 문제를 해결하는 능력은 프로그래밍에 있어서 중요합니다.

 

 

 

2023.05.15 - [GD's IT Lectures : 기초부터 시리즈/C, C++ 기초부터 ~] - [C/C++ 프로그래밍] 3. 변수와 상수

 

[C/C++ 프로그래밍] 3. 변수와 상수

Chapter 3. 변수와 상수 이번 장에서는 프로그래밍의 핵심 요소인 변수와 상수에 대해 배워볼 것입니다. 변수와 상수의 정의, 선언 및 초기화, 그리고 사용 방법을 알아보며, 두 요소가 어떻게 서로

gdngy.tistory.com

 

반응형

댓글