Visual Studio
-
C++ int argc, char *argv[]Visual Studio/C++ 기초 2013. 12. 5. 17:44
int argc, char *argv[]는 main() 함수의 매개변수 입니다. 그동안 매개변수 없이 main() 함수를 사용했지만 main() 함수도 매개변수를 지정할 수 있습니다. 프로그램의 시작점인 main()함수에 매개변수를 전달하는 방법은 명령 프롬프트에서 프로그램을 실행할 때 명령행 인자를 통해서 합니다. 명령행 인자란 명령 프롬프트 상에서 프로그램을 실행할 때 매개변수를 적는 것을 의미합니다. int main(int argc, char *argv[], char *env[]); argc - 프롬프트에서 입력한 명령행 인자의 개수 argv - 각각의 명령행 인자를 가리킬 포인터 배열 env - 프로그램을 실행하는데 필요한 환경 변수를 가리킬 포인터 배열 main() 함수에서 사용되는 3개의. 매..
-
C++ 포인터 연산Visual Studio/C++ 기초 2013. 11. 25. 22:20
포인터 변수에 대한 연산은 포인터 변수의 자료형과 연관이 있습니다. 포인터 변수에 값을 더하거나 빼는 연산은 포인터 변수가 가리키고 있는 주소에 저장된 자료형의 크기만큼 주소를 증감시킵니다. 만약 변수가 기억된 메모리 주소가 100이라면 포인터 변수의 값은 100이 됩니다. 포인터 변수+1을 수행하면 포인터 변수+1의 직접적인 의미가 아니라 포인터 변수의 자료형의 크기만큼 증가하게 됩니다. 풀어쓰면 ptr+i가 가리키는 주소 : ptr+(i바이트)가 아닌 ptr+(i*sizeof(*ptr)바이트) 포인터 변수에 대한 연산은 메모리에 저장된 자료를 포인터 변수로 처리하기 위해서입니다. 그렇기 때문에 모든 연산자를 사용할 수 있는 것은 아니고, 현재 자료의 다음 또는 이전 자료를 처리하는 증감 연산만 가능합..
-
C++ 배열과 포인터Visual Studio/C++ 기초 2013. 11. 21. 15:55
배열을 사용하기 위해서는 배열명, 배열 크기, 배열 요소를 지정해야 합니다. 배열명은 해당 배열의 시작 주소이고, C++에선 배열명을 사용해서 배열의 시작 위치를 설정합니다. int x[5] = {1, 2, 3, 4, 5}, *ptr; ptr = x; 포인터 변수 ptr에게 배열 x를 대입하였습니다. x는 배열명이기 때문에 해당 배열의 시작 주소 값입니다. 이를 쉽게 설명하면 x[0]의 시작 주소를 포인터 변수 ptr이 가지고 있기 때문에 ptr을 사용해서 배열 x를 처리할 수 있습니다. 구체적으로 표현하면 아래와 같습니다. ptr == &x[0] *ptr == x[0] ptr+1 == &x[1] *(ptr+1) == x[1] ptr+2 == &x[2] *(ptr+2) == x[2] ptr+3 == &x..
-
C++ 다차원 배열Visual Studio/C++ 기초 2013. 11. 7. 17:30
앞에서 포스팅 했듯이 배열을 사용하기 위해선 배열명, 배열 요소, 배열 크기를 지정해야 합니다. 배열은 배열의 크기를 지정하는 방법에 따라서 1차원 배열 혹은 다차원 배열로 구분할 수 있는데요, 이번엔 다차원 배열에 대해 포스팅 해보겠습니다. 다차원배열을 사용하는 방법은 아래와 같습니다. int arr1[2][4]; //int형 2차원 배열인 2행 4열 arr1입니다. arr1[0][0] arr1[0][1] arr1[0][2] arr1[0][3] arr1[1][0] arr1[1][1] arr1[1][2] arr1[1][3] 일반적으로 배열의 크기를 2개 지정하면 2차원 배열, 3개를 지정하면 3차원 배열, 4개를 지정하면 4차원 배열이라고 합니다. 2차원 배열을 초기화 하는 방법은 1차원 배열과 같이 중..
-
C++ 1차원 배열Visual Studio/C++ 기초 2013. 11. 7. 16:58
배열은 동일한 자료형으로 구성된 자료의 집합입니다. 배열을 처리하기 위해서 메모리에 연속된 기억 공간을 사용합니다. 만일 연관성 있는 동일한 성격의 자료를 사용한다고 가정할 때, 일반 변수로 선언해서 처리하기 보단 배열을 사용하는 방법이 훨씬 더 효율적입니다. 예를 들어, 5개의 서로 다른 변수를 int형으로 선언한 예를 배열로 처리하면 다음과 같습니다. int data[5]; 배열 첨자는 0부터 시작하여 data[0], data[1], data[2], data[3], data[4] 까지 됩니다. 배열도 변수의 일종이기 때문에 배열을 선언함과 동시에 초기화할 수 있습니다. 그런데 배열은 일반 변수와 달리 여러 개의 자료로 구성되어 있기 때문에 초기화하는 방법이 다릅니다. 먼저 배열을 선언할 때 배열의 크..
-
C++ 포인터Visual Studio/C++ 기초 2013. 11. 5. 20:51
모든 데이터는 메모리 장치에 저장됩니다. 메모리 장치에 저장된 데이터를 참조하기 위해서는 데이터가 지정된 위치, 즉 주소를 지정해서 처리하여야 합니다. 일반적으로 메모리 장치는 1byte 단위로 주소가 지정되고, 메모리의 첫 번째 byte주소는 0번지, 1byte 증가할 때 마다 주소가 1씩 증가합니다. 포인터를 사용할 때 몇가지 주의사항이 있습니다. 1. 사용 전에 반드시 초기화해야 할 것. 2. 포인터 변수의 자료형을 반드시 지정해야할 것. 여기서 포인터는 void형으로 선언할 수 있는데요, 함수에 사용되는 반환 값이 없는 함수를 뜻하지만, 포인터 변수에 사용되는 void는 임의의 자료형을 가리키는 것을 의미합니다. void *pa; int a = 10; 이렇게 선언하면 컴파일 오류가 발생합니다. p..
-
C++ 함수Visual Studio/C++ 기초 2013. 10. 12. 18:07
C++는 객체 지향 프로그래밍 기법을 사용하여 프로그램을 작성하기 때문에 함수와 변수로 구성된 클래스를 사용합니다. 클래스를 구성하는 함수는 명령어들을 기능별로 묶어서 구조화하고, 이들을 각각의 분리된 모듈로 처리합니다. 이 때 사용하는 방법이 서브루틴인데요, 서브루틴은 프로시저 혹은 함수로 만들어집니다. 프로그램에서 프로시저나 함수가 주종관계로 구성될 수도 있고, 각각이 동일한 자격을 갖는 수평적인 구조일 수도 있습니다. 함수를 사용해 프로그램을 기능별로 모듈화하기 위해 몇 가지 원칙이 필요합니다. 1. 모듈은 기능별로 완결된 구조를 가져야 함. 2. 각 모듈별로 독립성이 보장되어야 함. 3. 모듈은 반드시 입구 출구가 있어야 함. 함수는 머리와 본문으로 구성됩니다. 머리부분은 함수의 자료형, 함수의 ..
-
C++ switchVisual Studio/C++ 기초 2013. 10. 10. 16:57
조건문중에서 if, else if, switch가 있는데 조건이 적을 경우 if나 else if가 편리하지만, 많은 경우의 수를 다루는 상황이 발생할 경우 switch문이 편리합니다. switch(수식) { case 값1 : 문장; 문장; break; case 값2 : 문장; 문장; break; ................... default : 문장; break; } 여기서 값을 입력받고 수식 자리와 case의 값 1,2,3과 일치하는 것을 검사하여 그에 맞게 조건문을 수행하고, 만약 조건에 맞는 값이 없는 경우 default로 넘어가 문장을 수행합니다. 단, switch에 사용된 수식은 정수형 자료(문자형 포함)이어야 하고, break는 반드시 사용하여야 합니다. 예제를 보겠습니다. #include..