[바킹독의 실전 알고리즘] 0x02강 - 기초 코드 작성 요령 II
// 01
void func(int a) {
a = 5;
}
int main(void) {
int t = 0;
func(t);
cout << t;
}
// 출력
// 0
// 02
void func(int arr[]) {
arr[0] = 10;
}
int main(void) {
int arr[3] = {1, 2, 3};
func(arr);
cout << arr[0];
}
// 출력
// 10
// 03
struct pt{
int x, y;
};
void func(pt a) {
a.x = 10;
}
int main(void) {
pt tmp = {0, 0};
func(tmp);
cout << tmp.x;
}
// 출력
// 0
void swap1(int a, int b) {
int tmp = a;
a = b;
b = tmp;
}
void swap2(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
void swap3(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
}
vector<int> v(100);
v[20] = 10;
v[60] = -4;
void func1(vector<int> v) {
v[10] = 7;
}
int main(void) {
vector<int> v(100);
func1(v);
cout << v[10];
}
// 출력
// 0
bool cmp1(vector<int> v1, vector<int> v2, int idx) {
return v1[idx] > v2[idx];
}
bool cmp2(vector<int>& v1, vector<int>& v2, int idx) {
return v1[idx] > v2[idx];
}
int main(void) {
string s = "potato";
printf("s is %s\n", s);
}
// 출력
// s is ?
scanf/printf에서는 C++ string을 처리할 수 없음
C에서는 char*로 문자열을 다루기 때문
C++ string을 활용하고 싶다면 char*로 입력 받고 string으로 형 변환을 한 뒤, 작업을 다 끝낸 뒤에 c_str() 메서드를 이용해 출력
int main(void) {
char a[10];
printf("input : ");
scanf("%s", a);
string s(a); // 혹은 string s = a;
printf("a is %s\n", a);
printf("s is %s\n", s.c_str());
}
// 출력
// a is test
// s is test
scanf와 cin 모두 공백 전까지만 입력을 받는 문제
int main(void) {
char a[10];
printf("input : ");
scanf("%s", a);
printf("a is %s\n", a);
}
// input : hi hello
// 출력
// a is hi
int main(void) {
string s;
cout << "input : ";
cin >> s;
cout << "s is " << s;
}
// input : hi hello
// 출력
// s is hi
이에 대한 해결책은 3가지
// 1. scanf의 옵션
char a[10];
scanf("%[^\n]", a1);
// 2. gets 함수 (보안상의 이유로 C++ 14 이상에서는 제거됨)
char a2[10];
gets(a2);
puts(a2);
// 3. getline 함수
string s;
getline(cin, s);
cout << s;
ios::sync_with_stdio(0)
cin.tie(0)
위 모든 내용은 코딩 테스트 문제 풀이 요령이라는 것에 주의하자!!!
언어 공부할 생각에 신이 난다 ... . .. .
끗 ..