Intro
C++μμ ν¨μμ λ°°μ΄μ 맀κ°λ³μλ‘ μ¬μ©ν λ, λ€μκ³Ό κ°μ syntaxλ₯Ό λ°λ₯΄κ² λ©λλ€.
μ¬κΈ°μ μ£Όμν΄μΌ νλ κ²μ΄ νλ μμ΅λλ€.
void print_array(int numbers []);
λ°°μ΄μ μΈμλ‘ μ¬μ©νλ λ²
μ°λ¦¬κ° μλ€μνΌ C++μμ ν¨μμ 맀κ°λ³μλ₯Ό μ λ¬νλ κ²μ μ§κ΄μ μ λλ€.
μ ν΄μ§ μλ£νμ λν κ°μ κ΄νΈ λ΄μ μ λ ₯νλ©΄ λ©λλ€.
κ·Έλ¦¬κ³ μ΄λ λ²‘ν° λν λ§μ°¬κ°μ§μ λλ€.
νμ§λ§ C++ λ°°μ΄μ λ§€κ° λ³μλ‘ μ¬μ©ν λλ μ‘°κΈ λ€λ¦ λλ€.
C++μμ λ°°μ΄μ μ΄λ¦μ ν΄λΉ λ°°μ΄μ 첫λ²μ§Έ κ°μ΄ λ€μ΄μλ λ°μ΄ν°μ μ£Όμλ₯Ό λνλ λλ€.
λ€μ λ§νμλ©΄, λ°°μ΄μ μ΄λ¦μ ν΄λΉ λ°°μ΄μ μμ μ§μ μ μ£Όμλ₯Ό λνλ λλ€.
κ·Έλ κΈ° λλ¬Έμ, ν¨μμ λ°°μ΄μ μΈμλ‘ μ¬μ©νκ² λλ©΄, λ€λ₯Έ μλ£νκ³Όλ λ€λ₯΄κ² μλ£κ° ν΅μ§Έλ‘ 볡μ¬λμ΄ μ λ¬λλ ννκ° μλλλ€.
ν΄λΉ λ°°μ΄μ 첫λ²μ§Έ μλ£μ λ°μ΄ν°μ μμΉ (μ£Όμ)κ° μ λ¬λ©λλ€.
μ΄λ° μ΄μ λ‘ λΉμ°νκ²λ ν¨μλ ν΄λΉ λ°°μ΄μ μΌλ§λ λ§μ μλ£κ° λ€μ΄μμμ§ μ μ μμ΅λλ€.
νλ‘κ·Έλ¨μ ν΄λΉ λ°°μ΄μ λν΄ μΌλ§λ λ§μ λ°λ³΅μ ν΄μΌ ν μ§ λͺ¨λ₯΄κ² λλ κ²λλ€.
μ΄λ° λ¬Έμ μ λλ¬Έμ C++μμ ν¨μμ λ°°μ΄μ μ λ¬ν λλ ν΄λΉ λ°°μ΄μ μΌλ§λ λ§μ μλ£κ° λ€μ΄μλμ§,
μλ£μ κΈΈμ΄ λν ν¬ν¨νμ¬ μ λ¬ν΄μΌ ν©λλ€.
νλ¦° μμλ₯Ό νλ 보μ¬λλ¦¬κ² μ΅λλ€.
void print_array(int numbers []);
int main() {
int my_numbers[] {1, 2, 3, 4, 5,};
print_array(my_numbers);
return 0;
}
void print_array(int numbers []){
// λ°°μ΄μ μΌλ§λ λ§μ μλ£κ° μλμ§ (κΈΈμ΄) λ₯Ό λͺ¨λ¦
λλ€.
// λ°°μ΄μ ν¬κΈ°λ₯Ό μ
λ ₯λ°μ νμκ° μμ΅λλ€.
}
κ·Έλ λ€λ©΄ λ°°μ΄μ ν¬κΈ°λ₯Ό μ λ¬νλ κ²μ μ΄λ»κ² νλ©΄ λ κΉμ?
λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ νλ©΄ ν΄κ²°λ©λλ€.
void print_array(int numbers [], size_t size);
int main() {
int my_numbers[] {1, 2, 3, 4, 5};
print_array(my_numbers, 5);
return 0;
}
void print_array(int numbers [], size_t size){
for (size_t i{0}; i < size; i++){
cout << numbers[i] << endl;
}
}
μ΄λ²μλ size_t μ μλ£νμΌλ‘ λ°°μ΄μ ν¬κΈ°λ₯Ό λνλ΄λ sizeλΌλ μΈμλ₯Ό λ°μμ΅λλ€.
(size_tλ λλ΅ μμλ‘ λ³ν μΌ μλ, μΈλ±μ€μ κ°μ κ°μ ννν λ μ£Όλ‘ μ¬μ©λλ unsigned integer μλ£νμΌλ‘ μ΄ν΄νλ©΄ μ’μ΅λλ€.)
μ΄λ κ² νλ©΄ λ¬Έμ κ° ν΄κ²°λ¬μ΅λλ€.
μΆκ°μ μΌλ‘ λ°°μ΄μ ν¬κΈ°λ₯Ό κ³μ°νλ λ°©λ² μ€ λνμ μΌλ‘ μ¬μ©λλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
int size = sizeof(arr) / sizeof(arr[0])
κ·Έλ°λ°, μμμ λ§νλ€μνΌ μ°λ¦¬λ μΈμλ₯Ό 볡μ¬ν΄μ μ²λ¦¬νλ λ°©μμ΄ μλκ³ ,
λ°°μ΄μ 첫λ²μ§Έ μλ£μ μ£Όμλ₯Ό μ λ¬ν ννμ λλ€.
μ¬κΈ°μ μκΈ°λ μ°¨μ΄μ μ λ°λ‘ 'ν¨μ λ΄μμ μ§μ μ μΌλ‘ μΈμλ‘ μ λ¬λ λ°°μ΄μ λ³κ²½μν¬ μ μλ€' λ μ μ λλ€.
λ§μΉ Pass by reference μ²λΌμ.
λ€μ μ½λμμ μ΄λ₯Ό μ§μ μ μΌλ‘ νμΈν μ μμ΅λλ€.
#include <iostream>
using namespace std;
void zero_array(int numbers[], size_t size) {
for (size_t i{0}; i < size; i++) {
numbers[i] = 0;
}
}
void print_array(int numbers[], size_t size) {
for (size_t i{}; i < size; i++) {
cout << numbers[i] << endl;
}
}
int main() {
int my_numbers[] = {1, 2, 3, 4, 5};
print_array(my_numbers, 5);
cout << endl;
zero_array(my_numbers, 5);
print_array(my_numbers, 5);
return 0;
}
zero_array ν¨μλ₯Ό ν΅ν΄μ my_numbers λ°°μ΄μ κ°λ€μ΄ 0μΌλ‘ λ³κ²½λ κ²μ μ μ μμ΅λλ€.
λ€λ₯Έ μλ£νμ λ€λ£° λ μ²λΌ return λ κ°μ λ€μ λ³μμ μ μ₯νλ€κ±°λ, κ·Έλ° modificationμ κ±°μΉμ§ μμμμλ κ·Έλ μ΅λλ€.
μ΄λ° νΉμ§μ μ μ©νκ² νμ©λ μλ μλ λ°λ©΄, μμΉ μλ κ²°κ³Όλ₯Ό λ³μ μλ μμ κ² μ λλ€.
κ·Έλ λ€λ©΄ μ΄λ₯Ό ν΄κ²°ν λ°©λ²μ μμλ³΄κ² μ΅λλ€.
μλ³Έ λ°°μ΄μ λ³νλ₯Ό λ°©μ§νλ λ°©λ²
μλ³Έ λ°°μ΄μ μλ£λ€μ λ³νμν€μ§ μκ³ , μΈμλ‘ μ¬μ©νλ λ°©λ²μ λ§€μ° κ°λ¨ν©λλ€.
ν¨μλ₯Ό μ μν λ μ λ ₯νλ μλ£ν μμ const λ₯Ό λΆμ΄λ κ² μ λλ€.
μμμ λν΄ κ³΅λΆνλ μ μ΄ μλ€λ©΄, const ν€μλμ λν΄ μ΅μν κ² κ°μ΅λλ€.
μμν μλ£λ const ν€μλλ₯Ό μμ λΆμ¬μ μ μΈλκ³ , μ μΈ μ΄νμ μ½μ μλ μμ§λ§ λ³νλμ§ μμ΅λλ€.
λ€μμ κ°λ¨ν μ½λλ‘ μλ²½νκ² μ΄ν΄ν μ μμ΅λλ€.
const int num {30};
cout << num << endl; // 30
num = 15; // Compiler Error
κ²°κ³Όμμ μ μ μλ―μ΄ μ½μ μλ μμΌλ, λ³νν μλ μμ΅λλ€.
λμΌνκ² μ°λ¦¬μ λ°°μ΄ ν¨μμ μ μ©νλ€λ©΄ μμ κ°μ ν¨κ³Όκ° λ°μν©λλ€.
λ°°μ΄μ μ½μ μλ μμ§λ§, λ³νν μ μλ κ²μ λλ€.
μ¦, λ€μκ³Ό κ°μ μ½λλ μ»΄νμΌλ¬ μλ¬κ° λ°μν©λλ€.
void print_array (const int numbers []; size_t size) {
for (size_t i {0}; i < size; i++{
cout << numbers[i] << endl;
}
numbers[i] = 0; // λ°°μ΄μ κ°μ λ³κ²½μν€λ €λ λͺ¨λ μλλ compiler errorλ₯Ό λ°μμν΅λλ€.
}
μμ½
C++μμ,
1. ν¨μμ λ°°μ΄μ μΈμλ‘ μ λ¬νλ©΄ λ°°μ΄μ 첫λ²μ§Έ μλ£μ μ£Όμκ° μ λ¬λλ€.
2. ν¨μμ λ°°μ΄μ μΈμλ‘ μ¬μ©νκΈ° μν΄μλ λ°°μ΄ μ체 λΏ μλλΌ, λ°°μ΄μ ν¬κΈ° (size)λ₯Ό ν¨κ» μ λ¬νλκ² μ’λ€.
3. ν¨μμ μ λ¬λ λ°°μ΄μ μλ£κ° 볡μ¬λ κ²μ΄ μλκΈ° λλ¬Έμ μ λ°°μ΄ κ°μ μ§μ μ λ³νλ₯Ό μ€λ€.
4. μ΄λ₯Ό λ°©μ§νκΈ° μν΄μλ const ν€μλλ₯Ό ν¨μ μ μΈ μ λ°°μ΄ λͺ μ΄μ μ μ¬μ©νλ©΄ λλ€.