• 입력과 출력을 C와 C++에서 정의하는 방식
C | C++ | |
Header | #include <stdio.h> | #include <iostream> |
Input | scanf() | std::cin >> |
Output | printf() | std::cout << |
New-line | "\n" | std::endl |
• cin, cout
cin(chraracter input) : 프로그램에서 사용자로부터 키보드로 입력을 받는데 사용된다.
'>>' 연산자와 함께 사용한다.
cout(character output) : 프로그램의 결과를 화면에 출력하는데 사용된다.
'<<' 연산자와 함께 사용한다.
#include <iostream>
int main() {
int num;
// 사용자로부터 정수 입력 받기
std::cout << "정수를 입력하세요: ";
std::cin >> num;
// 입력 받은 정수 출력
std::cout << "입력한 정수는 " << num << "입니다." << std::endl;
return 0;
}
• Boolean
'bool' 키워드를 사용하여 참 또는 거짓을 표현한다.
• 포인터
포인터는 메모리 주소를 저장할 수 있는 변수이다.
포인터는 주소를 가진다.
포인터 선언
data_type* pointer;
포인터 할당
pointer = &variable;
예시코드
int main() {
int num = 5; // 정수형 변수 선언 및 초기화
int *ptr; // 포인터 선언
ptr = # // 변수 num의 주소를 포인터 ptr에 할당
// 포인터를 통해 변수 num의 값을 변경
*ptr = 10;
// 포인터를 통해 변수 num의 값을 출력
std::cout << "num의 값: " << num << std::endl;
return 0;
}
• 레퍼런스(참조자)
같은 공간을 다른 이름으로 지칭하는 것이다.
(대상에 또 다른 이름을 붙여주는 것)
int &num2 = num1;
int & num2 = num1; // 둘 다 가능
예시 코드
int main() {
int num1 = 2021; // num1 선언 및 2021로 초기화
int num2 = num1; // num1의 값이 num2에 복사
num2 = 3047;
cout << "val : " << num1 << endl; // num1의 값 출력
cout << "ref : " << num2 << endl; // num2의 값 출력
cout << "val's address: " << &num1 << endl; // num1의 주소 출력(& 연산자 이용)
cout << "ref's address: " << &num2 << endl; // num2d의 주소 출력
return 0;
}
Result
val : 3047
ref : 3047
val's address : 0x7ffeece5a8b8
ref's address : 0x7ffeece5a8b8
• 배열
같은 타입의 변수를 하나로 묶어 관리해주는 것이다.
Type Name[size];
int A[6]
정적배열(1차원 배열)은 크기가 고정되면 바뀔 수 없다.
일반적으로 제로베이스 인덱스이다.
문자열을 좀 더 편하게 처리해줄 수 있는 클래스로 String이 있다.
#include <string>
string s = "문자열"
2차원 배열은 행과 열의 조합으로 구성된다.
Type Name[Row_size][Col_size];
int A[4][3];
• 동적 메모리 할당
프로그램 실행 중에 메모리를 필요에 따라 할당하고 해제하는 프로세스이다.
new 연산자
int *ptr = new int; // 정수형 변수를 위한 메모리 동적 할당
int *arr1 = new int[3[; // 크기가 3인 정수열 배열 동적 할당
delete 연산자
delete ptr; // ptr이 가리키는 동적 메모리 해제
항상 메모리를 할당한 후(new) 반드시 해제해야 한다.(delete)
메모리 누수를 방지하기 위함이다.
• Call By Value & Call By Reference
Call By Value
함수에 인자로 전달되는 값이 복사되어 전달된다.
void square(int x) {
x = x * x; // 매개변수의 값을 변경
}
int main() {
int num = 5;
square(num); // 값에 의한 호출
// 여기서 num은 여전히 5입니다.
return 0;
}
Call By Reference(포인터 사용)
함수에 인자로 전달되는 변수의 메모리 주소가 전달된다.
void square(int& x) {
x = x * x; // 매개변수의 값을 변경
}
int main() {
int num = 5;
square(num); // 참조에 의한 호출
// 여기서 num은 이제 25입니다.
return 0;
}
• 함수 오버로딩
같은 이름의 함수가 다른 매개변수 목록을 가지고 여러번 정의되는 것이다.
• 구조체
서로 다른 데이터 타입의 여러 변수를 하나의 그룹으로 묶어서 하나의 새로운 데이터 타입을 정의할 때 사용된다.
dot 연산자(.)를 이용해서 구조체나 클래스의 멤버에 접근할 수 있다.
#include <string>
struct Student {
int studentID;
std::string name;
int age;
};
'CS > 자료구조' 카테고리의 다른 글
[자료구조] #6 Stack(2) (0) | 2024.04.19 |
---|---|
[자료구조] #5 Stack(1) (0) | 2024.04.16 |
[자료구조] #4 C++ 문법(2) (0) | 2024.04.15 |
[자료구조] #2 알고리즘 분석(2) (0) | 2024.04.11 |
[자료구조] #1 알고리즘 분석(1) (0) | 2024.04.05 |