Visual Studio/C++ 기초
-
C++ 구조체Visual Studio/C++ 기초 2014. 6. 24. 21:55
프로그램에서 배열을 사용하는 이유는 서로 연관있는 동일한 자료형을 단일한 변수로 처리하기 위해서 입니다. 처리도 하기 쉽구요. 구조체를 선언하기 위해서 struct이라는 명령어를 사용합니다. struct A { int a; char name[20] int b; int c; int d; }; 구조체는 서로 연관된 자료들을 묶어서 하나의 단위로 취급합니다. 이러한 장점을 살리기 위해 구조체 연산자를 사용해서 구조체 변수와 구조체 멤버를 연결해야 합니다. 예를 들어 위 틀에서 나온 구조체A에 포함되어 있는 멤버 a에 값을 저장하기 위해서 참조연산자인 "."를 사용해 A.a 이런 식으로 연결해 줍니다. 성적 처리 프로그램에 관련하여 예제를 들어보겠습니다. #include using namespace std; s..
-
C++ 외부 변수 externVisual Studio/C++ 기초 2014. 4. 11. 20:03
외부 변수는 기억 클래스 명령어를 사용하지 않고 함수 밖에서 선언된 변수입니다. 외부 변수의 유효 기간은 정적 변수와 동일하지만 유효 범위가 다릅니다. 외부 정적 변수는 해당 변수가 선언된 파일 내에서만 사용 가능하지만, 외부 변수는 여러 개의 파일로 분할해서 작성한 프로그램 전체에서 사용할 수 있습니다. 다른 곳에서 선언된 외부 변수를 참조하려면 extern 명령어를 사용하여야 합니다. #include using namespace std; void sub(); int i =100; //외부 변수 i를 선언하고 100으로 초기화 합니다 void main(){ i+=10; cout
-
C++ 기억 클래스Visual Studio/C++ 기초 2014. 3. 2. 16:28
기억 클래스는 어떤 기억 장소에 할당할 것인지를 지정합니다. 데이터를 보관하기 위해서 CPU에 있는 레지스터와 주기억장치를 사용합니다. 대부분의 자료는 주기억장치를 사용해서 처리되는데, 주기억장치는 일반적인 메모리와 스택으로 구분해서 사용합니다. CPU와 레지스터, 일반적인 메모리, 스택 가운데 어디에 할당하느냐에 따라서 해당 변수에 대한 유효 범위와 유효 기간이 달라집니다. 할당 방식의 종류 1. 동적 할당 동적 영역에 지정된 변수는 컴파일할 때 변수 할당을 위한 명령어를 번역만 해놓고 실제 기억 공간 할당은 실행할 때 이루어집니다. 그리고 동적 할당된 변수의 유효 범위가 지나면 자동으로 소멸됩니다. 결국 동적 할당은 기억 공간의 낭비를 최소화할 수 있습니다. 동적 할당을 위해서 주로 스택을 사용합니다..
-
C++ 문자열 정렬Visual Studio/C++ 기초 2013. 12. 6. 14:21
숫자를 오름차순으로 정렬하는 방법은 여러 가지 있지만, 가장 간단한 방법을 사용해보겠습니다. sort() 라는 함수를 생성하고, 아래와 같은 알고리즘으로 작성합니다. 1. 이 함수는 n개의 정수 중에서 최솟값을 찾아 첫 번째 위치로 옮깁니다. 2. 이후 나머지 n-1개의 숫자 중에서 최솟값을 찾아 두 번째 위치로 옮기고, 이러한 과정을 가장 낮은 값이 나올 때 까지 반복합니다. 예제를 보겠습니다. #include using namespace std; void sort(int arr[]); void main(){ int i; int array[] = {20, 9, 8, 2, 5, 66, 100, 22, 45, 65, 43, 31}; cout
-
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..