C,C++

    [C++]객체지향 프로그래밍_포인터(1)

    포인터 포인터 변수란 메모리의 주소값을 지정하기 위한 변수이다. 12345678910int main(){ char ch1 = 'A'; char ch2 = 'Q'; int num = 100; ......... return 0;} csaa 정수 100이 저장된 int 형 변수 num 을 선언하고 이 변수의 주소값 저장을 위한포인터 변수 pnum을 선언한다. 그리고 나서 pnum에 num의 주소값을 저장한다. 12345678910111213int main(){ int num = 100; int *pnum; pnum = # cout

    [C++]객체지향프로그래밍_변수의 범위

    변수의 범위 변수는 선언되는 위치에 따라서 '전역변수' 와 '지역변수'로 나뉜다. - 메모리상에 존재하는 기간 - 변수에 접근할 수 있는 범위 지역변수 '지역'이란 중괄호에 의해 형성되는 영역을 뜻한다. 중괄호 내에 선언되는 변수는 모두 지역변수이다. 초기화하지 않으면 불필요한 값을 갖는다. 함수를 호출할 때마다 변수는 초기화된다. 지역변수는 해당 지역을 벗어나면 자동으로 소멸된다. 지역변수는 선언된 지역 내에서만 유효하므로 선언된 지역이 다르면 이름이 같아도 된다.지역변수는 해당 선언문이 실행될 때 메모리 공간에 할당되었다가. 선언문이 존재하는 함수가 반환을 하면 메모리 공간에서 소멸된다. 매개변수 함수를 정의할 때 선언하는 매개변수도 지역변수의 일종이다. - 선언된 함수 내에서만 접근 가능하다. - ..

    [C++]객체지향 프로그래밍 _ 함수(1)

    함수가 왜 필요한가. 크고 복잡한 문제를 작게 나눠서 하나씩 해결해 나가자! 함수 : 특정한 작업을 수행하는 독립적인 부분 함수 호출 : 함수를 불러서 사용하는 것 함수는 입력을 받으며 출력을 생성한다. 함수는 함수를 호출하는 루틴과 함수를 구현한 함수 정의 루틴으로 구성한다. 함수의 장점. 1. 크고 복잡한 문제를 작고 쉬운 문제들로 나누어 해결하기 쉽도록한다. -> 구조적 프로그래밍 가능 2. 같은 코드를 반복적으로 기술해야 하는 중복을 최소화하여 코드양을 줄인다. -> 코드의 수정, 유지보수가 쉬워진다. 3. 캡슐화가 가능하다. -> printf()함수가 어떻게 구현되었는지 몰라도 사용법만 알면 사용가능 함수의 정의 반환형 ( return type ) 함수 헤더 ( function header ) ..

    [C#] Class 클래스 사용_Random 과 List

    클래스를 만들기 전에 먼저 사용해봅시다. Ranodom 클래스 : 임의의 숫자를 생성할 때에 사용합니다. 인스턴스 생성 Random random = new Random() 이렇게 생성한 random 인스턴스는 다음과 같은 것들을 가지고 있습니다. random. Equals GetHashCode GetType Next NextBytes NextDouble ToString Random 클래스에 Next() 메서드는 임의의 정수를 생성할 때에 사용합니다. Random 클래스를 사용한 임의의 정수 생성 static void Main(string[] args) { Random random = new Random(); Console.WriteLine( random.Next( 10 , 100 ) ); Console...

    [C,C++] 배열과 포인터

    배열과 포인터 1. 첨자 연산 배열의 내부적 처리 : 배열은 정보를 저장하는 가장 기본적인 자료 구조로서 실용성이 높다. 포인터는 조금 어렵기는 하지만 C언어를 다른 언어와 구분하는 가장 큰 특징이다. 이 둘은 아주 긴밀한 연관을 맺고 있으며 상호 보완적이면서 또한 일정 부분에 있어서는 대체도 가능하다. 배열의 정보저장 능력과 포인터의 정보 가공 능력이 결합되면 복잡한 현실 문제들을 해결하는데 아주 강력한 무기가 된다. - C는 내부적으로 1차원 배열만 지원한다. 2차원 이상의 다차원 배열은 1차원 배열의 확장에 불과하다. C에는 2차원 배열이라는 것이 없다. But 배열끼리 중첩이 가능하기 때문에 외부적으로는 다차원 배열도 지원하는 셈이다. - 배열을 구성하는 배열 요소의 타입에는 전혀 제한이 없다. ..

    [C,C++] 이중 포인터

    이중 포인터 ​ 포인터 변수를 가리키는 포인터 = 포인터의 포인터 ​ 포인터 변수도 메모리를 차지하고 있으므로 이 변수도 당연히 번지가 있다. 그래서 이중포인터를 선언할 수 있다. ​ 이중 포인터 변수를 선언할 떄는 * 구두점을 두 번 연속해서 쓴다. ​ int **ppi; = 정수형 대상체를 가리키는 포인터 변수의 번지를 가리키는 포인터 int **ppi == (int *) *ppi;​ ex) dbIPointer { int i; int *pi; int **ppi; ​ i = 1234; pi = &i; ppi = π ​ printf("%d\n",**ppi); } ​ 정수형 포인터 pi가 i의 번지를 가지고 정수형 이중 포인터 변수 ppi에는 pi의 번지를 대입해 놓고 ** 값을 읽으면 결국 i값이 읽혀진..

    [C,C++] 포인터 동적 메모리 할당

    void 형 포인터​ 선언 : void *vp; 이렇게 선언하면 vp포인터 변수의 대상체는 void형이 되며 이는 곧 대상체가 정해져 있지 않다는 뜻이다. ​ void 형은 함수와 포인터 변수에게만 적용되는 타입으로 일반 변수에는 쓸 수 없다. void 형 포인터의 특징​ 1. 임의의 대상체를 가리킬 수 있다. ​ void형 포인터는 어떠한 대상체라도 가리킬 수 있다. vp = pi; vp = pd; 좌변이 void형 포인터일 때는 우변에 임의의 포인터형이 모두 올 수 있다. ​ 반대로 임의의 포인터에 void형 포인터를 대입할 떄는 반드시 캐스팅을 해야한다. ​ 캐스팅 ex) pi = (int * ) vp; pd = (double *)vp; 2. *연산자를 쓸 수 없다. ​ void형 포인터는 임의의 ..

    [C,C++] 포인터 연산

    포인터 연산​ T형 포인터 ( type ) ​ 임의의 타입 T가 있을 때 T형의 포인터 변수를 선언할 수 있다. ​ int, char , double 등의 기본적인 데이터 타입형의 변수를 선언할 수 있음을 물론이고 구조체, 공용체, 배열에 대해서도 포인터형을 만들 수 있다. ​ * int , * char , * double ​ 가리키는 대상체(포인터가 가리키는 실체)와 포인터의 타입이 일치해야 한다. # 이건 기본 상식.. ​ 메모리 위치를 가리키는 포인터는 자신이 가리키고 있는 번지에 저장된 값이 어떤 종류인지를 기억하고 있어야 하며 이런 이유로 포인터를 선언할 때 대상체의 타입을 밝혀야 한다. ​ #증감연산자를 사용해서 현재 위치에서 앞뒤로 이동 번지를 가리키는 포인터도 일종의 변수이므로 실행 중에 ..

    [C,C++] 포인터의 정의 , 포인터 란?

    포인터란?​ 정수형이나 실수형의 일반적인 변수들은 수치값을 저장한다. 이에 비해 포인터형은 번지를 기억한다. ​ 포인터의 쓰임 데이터가 보관되어 있는 메모리 위치를 기억하고 있기 때문에 직접 값을 조작할 수도 있고 주변의 다른 값 까지도 손댈 수 있다. 위치는 단순히 4바이트의 번지이기 떄문에 함수의 인수로 전달하거나 받기도 효율적이며 함수로 포인터를 전달하면 포인터가 가리키는 메모리를 함수가 직접 조작이하는 것이 가능하다. 번지(address)의 개념 컴퓨터의 주 기억장치로 사용되는 RAM은 용량이 아주 커서 보통 백만 , 10억 단위를 사용한다. 32비트 운영체제에서 각 프로그램은 32비트의 가상 메모리 공간을 사용할 수 있다. 즉 값을 기억할 수 있는 메모리의 용량은 최대4G가 된다. ​ 컴퓨터는 ..

    [C,C++] 프로그래머의 동기

    프로그래머를 한 번 포기한 사람은 두 번째도 포기할 확률이 높다. 여러 프로그래머의 동기는 좋은 회사의 취직 혹은 어떤 자격증을 따야 하는 상황 이런 동기는 약하다. 프로그래머가 되겠다는 사람에게는 기본적인 논리력과 개인적인 노력도 중요하지만 무엇보다도 동기가 필요하다. 동기란 어떤 일을 하도록 만드는 추진력인데 외부적인 동기와 내부적인 동기로 분류할 수 있다. 외부적인 동기의 예로는 부모님의 요구 , 취업 , 승진 등이 있는데 경우에 따라서 생존이 걸린 절박한 문제임으로 열심히 분발하게 만드는 요인이 되기는 한다. 동기가 강하면 당장 포기하고 싶을 정도로 힘들어도 억지로 물고 늘어지는 끈기가 생긴다. 내부적인 동기란 스스로의 내부에서 우러나는 것이다. 저런 멋진 게임을 만들어 보고 싶다는 순진한 희망,..