문자형 char
컴퓨터 내부에선 모두 숫자(ASCII CODE)로 표현된다.

32~127번까지는 화면에 출력가능한 숫자가 나온다.

한글자는 'a'('')로 표현 문자열은 "Hello, Wolrd"("") 로 표현한다.

cin으로 여러개의 문자를 입력받으면 첫글자를 저장하고 나머지 문자는 버퍼(임시저장소)에 저장한다.

\n(줄바꿈),\t(줄간격맞추기)등 \로 시작하는 문자는 여러 기능을 수행한다.
",'등을 출력하고 싶으면 \를 사용한다. ex)\'안녕\'
\n은 가시적으로 두글자로 보이지만 한글자로 적용된다.

\n과 endl의 차이점
\n이 있으면 버퍼에 저장된다.
endl이 있으면 무조건 출력한다(버퍼에 있는걸 모두 출력한다).

#include  <iostream>

int main() 
{ 
using namespace std; 

//둘다 A가 출력된다. 
char c1(65); 
char c2('A'); 

//윈도우용 프로그램에서 사용 
wchar_t c; 
//이모티콘등 unicode를 사용가능하다. 
char32_t c3; 

cout << c1 << " " << c2 << endl; 

//캐스팅 
//C style 
cout << (char)65 << endl; 
cout << (int)'A' << endl; 

//C++ style 
cout << char(65) << endl; 
cout << int('A') << endl; 

//위에 캐스팅은 강제로 변환하는 개념이다. 
//아래 방법은 기본타입을 변환할때 컴파일러에게 확인후 변환한다. 
cout << static_cast(65) << endl; 
cout << static_cast('A') << endl; 

char ch(97); 
cout << ch << endl; 
cout << static_cast(ch) << endl; 
cout << ch << endl; 

//버퍼 테스트 abc 입력하면 바로 출력된다. 
cin >> c1; 
cout << c1 << " " << static_cast(c1) << endl; 
cin >> c1; 
cout << c1 << " " << static_cast(c1) << endl;  
cin >> c1; 
cout << c1 << " " << static_cast(c1) << endl; 


//범위 체크 
cout << sizeof(char) << endl; 
cout << (int)std::numeric_limits::max() << endl; 
cout << (int)std::numeric_limits::lowest() << endl; 

cout << sizeof(unsigned char) << endl; 
cout << (int)std::numeric_limits::max() << endl; 
cout << (int)std::numeric_limits::lowest() << endl; 

cout << '\a' << endl; 

return 0; 
}

리터럴 literal 

상수란? 변하지 않는 것
3.14

const를 사용하면 변수의 값을 변경할 수 없다.

 

#include <iostream>

int main()
{
	using namespace std;
	//상수 변하지 않는것.
	3.14;

	//pi는 메모리에 공간을 차지하고 있다.
	//pi는 변수이다.
	float pi = 3.14f;

	//signed unsigned로 변경
	//int i = -12345u;
	//위 아래 같다.
	//i = (unsigned)-12345;

	//const 값을 변경할 수 없다.
	const float pi2 = 3.14;
	
	//Decimal 10진수
	// 0 1 2 3 4 5 6 7 8 9
	//Octal 8진수
	// 0 1 2 3 4 5 6 7 10 11 12 13
	//Hexa 16진수
	// 0 2 3 4 5 6 7 8 9 A B C D E F

	//0이붙으면 8진수로 인식한다.
	int x = 012;
	cout << x << endl;

	//0x가 붙으면 16진수로 인식한다.
	x = 0xF;
	cout << x << endl;

	//0b가 붙으면 2진수로 인식한다.
	x = 0b0111;
	cout << x << endl;

	//리터럴 상수
	//10은 갯수이다.
	int price = x * 10;

	//매직넘버(상수)를 입력하는 것보단 만들어 사용한다.
	//주석 대신 사용한다.
	const int price_num = 10;
	price = x * price_num;

	return 0;

}

심볼릭 symbolic

 

#define PRICE 30;
기존 c사용자는 매크로를 사용했다.

 

매크로의 단점
맨위에 설정해놓기에 디버깅이 힘들다.
매크로의 적용범위가 쓸모없이 너무 넓어진다.

 

매크로 대신 const를 사용한다.

적용범위 안에서 표현해서 사용하는것이 좋다. 
const int price = 30;

심볼릭 상수란?
const 를 헤더파일로 만들어 모아놓으면 사용하기 좋다.
헤더파일로 만들어 놓으면 재사용이 용이하다.
또 한곳에 모여있으면 코드 변경이 쉽고 영향력이 넓어진다.

main.cpp

#include  <iostream>
#include "MY_CONSTANTS.h" 

using namespace std; 

//파라미터를 변경하지 못하게 const로 생성한다. 
void printNumber(const int num) 
{ 
//이함수 안의 영역에 num 생성되고 
//호출될때 인자 4가 입력된다. 

//값을 변경할 시 변수를 생성한다. 
int n = num; 
n = 456; 
cout << num << endl; 
} 

int main() 
{ 
//값을 변경할 수 없다. 
//컴파일러가 변경을 막아준다. 
const double gravity{ 9.8 }; 
//const위치는 상관없으나 보통 앞에 붙인다. 
double const gravity2{ 9.8 }; 

//아래 코드는 에러가 난다. 
//gravity = 3.2; 

printNumber(4); 

//컴파일할 때 생성되기에 컴퓨터가 알 수 있다. 
const int my_const(123); 
//constexpr은 컴파일할때 생성되는 함수를 표현할 때 사용한다. 
constexpr int my_const2(123); 
int number; 
cin >> number; 

//아래 const는 실행을 해봐야 알 수 있다. 
const int special_num(number); 
//constexpr을 사용하면 에러가 난다. 
//constexpr int special_num2(num); 

//기존 c사용자는 매크로를 사용했다. 
//맨위에 설정해놓기에 디버깅이 힘들다. 
//매크로의 적용범위가 너무 넓어진다. 
#define PRICE 30; 
//아래로 사용하는 것이 좋다. 
const int price = 30; 

//헤더파일로 const를 뺴놓는다 
double d1 = constants::pi; 

return 0; 
} 


MY_CONSTANTS.h

#pragma once 

namespace constants 
{ 
constexpr double pi(3.141592); 
constexpr double avogadro(6.02214); 
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 비트단위연산자,비트플래그란?  (0) 2019.07.04
c++ 연산자종류  (0) 2019.07.03
c++ 정수형,부동소수점수란?  (0) 2019.06.28
c++ namespace란?  (0) 2019.06.26
c++ 헤더파일 만드는 이유  (0) 2019.06.26

정수형 (integers)

문자
-char 1Byte

 

정수의 종류
- Short 2Byte
- int 2Byte(대부분 4Byte)
- long 4Byte
- long long *byte(C99/C++11 type)

컴파일러 스펙에 처리용량이 따라 달라질 수 있다.

int i = 1;
00000000 1Byte
00000000 1Byte
00000000 1Byte
00000001 1Byte

int형은 위처럼 4Byte로 구성 첫 한 비트는 부호에 사용된다.


주의할 점(OverFlow)
표현할 수 있는 숫자를 넘어가는 수가 들어오면 반대로 가장큰 수가 저장된다.
- 가장큰수를 넘어가면 가장작은수
- 가장 작은수를 넘어가면 가장큰수

 

#include <iostream>
#include <cmath>
#include <limits>

using namespace std; 

int main() 
{ 
short s = 32767; 
int i = 1; 
long l = 1; 
long long ll = 1; 

//2출력 
//00000000 00000001 
cout << sizeof(s) << endl; 
//최대출력수 보기 32767 
cout << pow(2, sizeof(short) * 8 - 1) - 1 << endl; 
cout << numeric_limits::max() << endl; 
cout << numeric_limits::min() << endl; 
cout << numeric_limits::lowest() << endl; 

s = s + 1; 
//-32768이 출력된다.  
//이 현상을 overflow라고 한다. 
//2진수로 표현할 수 있는 숫자를 넘어가면 가장 작은 수로 변경된다. 
cout << s << endl; 


//2진수로 표현할 수 있는 가장 작은 숫자를 넘어가면 가장큰 수로 변경된다. 
s = numeric_limits::min(); 
s = s - 1; 
//32767이 출력된다. 
cout << s << endl; 


unsigned int i2 = -1; 
//overflow가 발생하여 큰 숫자가 출력된다. 
cout << i2 << endl; 

//int형으로 저장한다. 
int i3 = 22 / 4; 
cout << i3 << endl; 


//4출력 
cout << sizeof(i) << endl; 
//4출력 
cout << sizeof(l) << endl; 
//8출력 
cout << sizeof(ll) << endl; 

return 0; 
}

 

C++ 11 고정 너비 정수
Fixed-width Integers

int 형이 플랫폼마다 byte사용량이 다를 수 있다.

불확실성이 있으면 프로그래밍에 불안이 된다.
이로인해 고정 너비 정수가 나오게되었다.

멀티플랫폼 프로그래밍때 사용된다.

cstdint를 include해서 사용한다

int16_t : 16bit 2byte로 변경한다.
int8_t : 8bit 1byte로 변경한다.
주의점 : 8bit는 char형태라 문자로 변경된다.

자세한것은 나중에 사용할때 알아보기로하자.

#include <iostream>
#include <cstdint>

int main() 
{ 
using namespace std; 

//2Byte로 변경 
int16_t i(5); 
//1Byte로 변경 char형태 
//특별히 쓸일 아니면 쓰지말자 
int8_t myInt = 65; 

//A로 출력된다. 
cout << myInt << endl; 

return 0; 
}

 

부동소수점수
floating point numbers

실수 다루기
실수는 정수보다 더 정밀한 숫자이다.

부동소수점수 종류

이름 float double Long double
최소크기 4Byte 8Byte 8Byte
전형적인크기 4Byte 8Byte 8,12 or 16Byte

최근에 나온 언어들은 double기본으로 사용하나
큰 메모리를 사용하는 프로젝트에선 float가 좋다.

1.0/3.0을 하면  0.3333333333333333333333333~~~이될텐데
0.333333으로 출력된다.

iomanip안에 setprecision을 사용하여 출력 숫자를 늘릴 수 있다.

 

숫자 무한대도 표현이 된다.


5.0/0.0 inf
-5.0/0.0 - -inf
0/0 -nan(ind)
로 출력된다.

cmath를 include해서 isnan,isinf함수로 확인을 할 수 있다.

주의할 점: 컴퓨터의 계산방법은 우리생각과 다를 수 있다.

#include <iostream>
#include <iomanip>
#include <limits>

int main() 
{ 
using namespace std; 


//3.14 == 31.4 * 0.1 
//31.4e-1는 같다 
//e는 십진수 e-1은 10의 -1제곱 
float f(3.141592f); 
double d(3.141592); 
long double ld(3.141592); 

cout << sizeof(float) << endl; 
cout << sizeof(double) << endl; 
cout << sizeof(long double) << endl; 

cout << numeric_limits::min() << endl; 
cout << numeric_limits::min() << endl; 
cout << numeric_limits::min() << endl; 


//iomanip로 출력 숫자를 정할 수 있다. 
cout << 1.0 / 3.0 << endl; 
cout << setprecision(16) << 1.0 / 3.0 << endl; 

//출력할 수 있는 가장 가까운 수를 출력한다. 
d = 0.1; 
cout << d << endl; 
cout << setprecision(17) << d << endl; 

return 0; 
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 연산자종류  (0) 2019.07.03
c++ 문자형,리터럴상수,심볼릭상수 란?  (0) 2019.07.01
c++ namespace란?  (0) 2019.06.26
c++ 헤더파일 만드는 이유  (0) 2019.06.26
c++ 키워드,식별자란?  (0) 2019.06.26

namespace(명칭공간) 사용이유
- 이름이 같은 함수가 있으면 에러가 난다.
- 같은 함수명을 유지하고 싶을때 namespace를 생성하여 함수명을 유지한다.

namespace특징
- namespace안에 namespace를 생성할 수 있다.
- namespace안에 함수를 불러 올때 ::을 사용한다.
- namespace도 다른 함수,변수들과 공통된 이름은 생성하지 못한다.
- std::cout처럼 사용하기 귀찮다면 using namespace std;를 사용하면 cout을 사용할 수 있다.
- 같은 코드안에 같은 함수명이 있다면 에러난다.

 

#include <iostream>

using namespace std;

namespace NamespaceTest
{
	int test(int a, int b)
	{
		return a + b;
	}
	namespace InnerSpace
	{
		int test(int a, int b)
		{
			return a + b;
		}
	}
}

namespace NamespaceTest2
{
	int test(int a, int b)
	{
		return a + b;
	}
	 
}


int main()
{

	using namespace NamespaceTest;

	//using namespace NamespaceTest; 를 통해 test함수를 바로 쓸 수 있다.
	cout << test(1, 3) << endl;
	//NamespaceTest namespace안에 InnerSpace를 불러올 수 있다.
	cout << InnerSpace::test(1, 3) << endl;
	//함수명은 같지만 다른 namespace에 있는 함수를 사용할 수 있다.
	cout << NamespaceTest2::test(1, 3) << endl;

	return 0;
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 문자형,리터럴상수,심볼릭상수 란?  (0) 2019.07.01
c++ 정수형,부동소수점수란?  (0) 2019.06.28
c++ 헤더파일 만드는 이유  (0) 2019.06.26
c++ 키워드,식별자란?  (0) 2019.06.26
c++ 함수란?  (0) 2019.06.25

헤더파일 만드는 이유
- 파일 하나를 길게 코딩하면 복잡한 프로그램을 제작할때 힘들다.
- 공통으로 사용되는 모듈을 재사용하기위해 분리한다.

예를들어 쉬운코드로 더하기 모듈을 만든다고 했을때
두숫자,세숫자,네숫자등 덧셈들의 함수를 만들면 코드의 양이 많아진다.

또 한 선언을 사용할 수는 있지만 똑같이 코드가 길어질 수 있다.

줄이기위해 헤더파일에 정의하여 사용한다.


main.cpp

//<>는 표준에 들어있는 특별한것 컴파일러설치할때 따라들어온다. 
#include  
//헤더파일에 선언을 해놓고 사용한다고 생각하면된다. 
#include "add.h" 

using namespace std; 
/* 
선언으로 가능하긴 하지만 여러개의 덧셈이 추가되면 선언으로 하기엔 양이 너무 많다. 

int add(int a, int b, int c); 
int add(int a, int b); 
*/ 
int main() 
{ 
cout << add(1, 3) << endl; 
cout << add(1, 3, 6) << endl; 

return 0; 
} 




add.h

#pragma once 
int add(int a, int b); 
int add(int a, int b, int c); 


add.cpp

int add(int a, int b) 
{ 
return a + b; 
} 

int add(int a, int b, int c) 
{ 
return a + b + c; 
} 




'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 정수형,부동소수점수란?  (0) 2019.06.28
c++ namespace란?  (0) 2019.06.26
c++ 키워드,식별자란?  (0) 2019.06.26
c++ 함수란?  (0) 2019.06.25
c++ 입력,출력  (0) 2019.06.25

키워드는 c++프로그래밍(다른 언어도 비슷하다)에서 지원하는 것들이다.
if,return,int 등이있다.

키워드는 변수명에 들어가면 안된다.

식별자는 변수,함수,클래스명등을 말한다.

변수,함수,클래스명은 숫자로 시작못한다.
변수명은 너무길지 않으면서 의미를 충분히 표현할 수 있게하자.
변수명 _(언더바)로 분리하는 경우가 많다.
변수명은 대문자로 잘 쓰지않는다.
ex)int num_apples;
ex)int numApples;

함수명은 프로젝트 그룹에 따라 유연성있게 대문자,소문자로 시작할지 보고 정하자.

클래스명은 대부분 대문자로 시작한다.

변수,함수명이 너무길어 질거같으면 주석으로 처리하자.

 

#include <iostream>

//GetNumber() getNumber()둘다 상관없다.
void getNumber()
{

}

//클래스명은 대문자로 대부분 대문자로 시작한다.
class MyClass
{
public:
	int m_variable;
};

int main()
{
	//사과의 숫자를 담는 int형 변수로 변수명만 보면 알 수 있다.
	int num_apples;
	//_(언더바)형식이 아닌 대문자로 구분하는 방법도 있다.
	int numApples;
}

 

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ namespace란?  (0) 2019.06.26
c++ 헤더파일 만드는 이유  (0) 2019.06.26
c++ 함수란?  (0) 2019.06.25
c++ 입력,출력  (0) 2019.06.25
c++ 객체,변수,초기화,대입이란?  (0) 2019.06.25

함수 function
- 반복되는 작업을 분리하여 함수로 생성한다.
리턴값 return values
- 함수에서 반환하는 결과값을 말한다.
매개변수 parameters
- 함수가 사용될때 생성되는 변수를 말한다.
인수 aguments
- 함수를 불러올때 사용할 인수를 말한다.

 

#include <iostream>

using namespace std;


//함수도 메모리에 저장되어 있다.
//integer형태로 반환한다.
//int a,int b는 parameters 매개변수 이다.
int addTwoNumbers(int a, int b)
{
	int sum = a + b;
	cout << sum << endl;

	//반환값
	return sum;
}

//return 값이 없을때 void를 사용한다.
void printHello() 
{
	cout << "Hello" << endl;
}

int main()
{
	//반복적인 작업에 같은코드를 계속생성하는건 비생산적이다.
	//한가지패턴이 여러번 나타나면 함수로 분리한다.
	cout << 1 + 3 << endl;
	cout << 4 + 5 << endl;
	cout << 8 + 7 << endl;

	//함수를 만들면 아래처럼 쉽게 사용할 수 있다.
	//한 자리 더하기에 사용하면 불필요해보지만 복잡한 사용은 무조건 쪼개서 사용한다.
	//메모리에 저장된 함수를 불러와 사용한다.
	//함수를 호출할때 (1,3) 넣어주는값을 aguments 인수라고 한다.
	//함수실행될때 파라미터에 인수를 초기화한다.
	addTwoNumbers(1, 3);
	addTwoNumbers(4, 5);
	addTwoNumbers(8, 7);

	//함수가 integer형이기에 int로 값을 저장할 수 있다.
	int a = addTwoNumbers(4, 5);
	cout << "a 변수의 값은? " << a << endl;

	printHello();

	return 0;
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 헤더파일 만드는 이유  (0) 2019.06.26
c++ 키워드,식별자란?  (0) 2019.06.26
c++ 입력,출력  (0) 2019.06.25
c++ 객체,변수,초기화,대입이란?  (0) 2019.06.25
C언어 파일입출력  (0) 2019.01.18

입출력을 사용하기 위해선 iostream을 include해줘야한다.

출력은 std::cout을 사용한다.
- 줄맞춤을 할땐 "\t"를 사용한다.
- \뒤에 문자는 어떠한 기능을 수행한다.(ex:줄맞춤,줄바꿈)
- 특이점 : \a는 소리를 출력해준다.

입력받을때는 std::cin을 사용한다.
출력과 반대로 입력연산자 >>를 사용한다.

std::을 사용하기 귀찮다면 using namespace std;를 사용한다.

 

#include <iostream>
#include <cstdio>

int main()
{
	//using namespace std;
	//int main(){} 함수안에서 std::를 사용하지 않아도 된다.
	using namespace std;
	int x = 1024;

	//std란 namespace안에 cout함수를 사용한다.
	std::cout << "Test" << std::endl;
	std::cout << "x is " << x << std::endl;
    //\t를 사용하면 줄맞춤이 된다.
	std::cout << "tab" << "\t" << "test" << std::endl;
	std::cout << "tab2" << "\t" << "test" << std::endl;

	//using namespace std;를 해놨기에 std::는 생략되어도 된다.
	//입력받는방법 cin >> 연산자를 사용한다.
	cin >> x;
	cout << "x change " << x << endl;

	return 0;
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 키워드,식별자란?  (0) 2019.06.26
c++ 함수란?  (0) 2019.06.25
c++ 객체,변수,초기화,대입이란?  (0) 2019.06.25
C언어 파일입출력  (0) 2019.01.18
C언어 코딩 함수포인터,구조체  (0) 2019.01.08

객체 Objects
- 객체지향 프로그래밍란 말에서 사용되는 객체(Object)
- c++,java에서 사용
- 물리적으로 공간을 차지하고 있는 물체를 존재한다고 본다.
- 컴퓨터안에선 메모리에 저장이 돼있는 정보가 객체로서 존재한다고 본다.

변수 variables
- 객체를 다루고 싶을때 즉, 메모리에 올려놓고 사용하고 싶을 때 사용한다.
- ex)아파트 104동 1014호 1041014로 저장하면 보기 힘드므로 OO 네 집처럼 이름 저장한다.

Left-values와 Right-values

- Left-values는 알기 쉬운 주소 값을 가지고 있다.

Right-values는 주소값을 알기 어렵다.


초기화 initializaion와 대입 assignment

- int a = 123; int a(123);등이 initializaion초기화이다.

- 초기화는 메모리에 적재될 때 같이 집어 값을 넣어준다.

- int b; 

- b = 123;은 assignment 대입의 개념 생성된 메모리 안에 값을 대입해준다.


초기화를 안 했을 때의 문제점

- 메모리 주소 안에 garbage값이 들어 있을 수 있다.

 

#include <iostream>

int main()
{
	//x라는 정수형(interger)변수를 선언했다.
	//x도 객체이다. x는 숫자를 담을수있는공간을 메모리에 차지하고 있다.
	//x 메모리의 이름이다.
	int x;
	//x = 123 <- assignment 대입해준다.
	//프로그래밍에서 = 는 보통 오른쪽값을 왼쪽에 대입해준다.
	//즉, x란 변수가 가르키고있는 메모리 공간에 123을 대입해준다.
	x = 123;

	//x의 주소의 대입되어있는 값 출력
	std::cout << x << std::endl;
	//x의 주소 출력(메모리주소)
	std::cout << &x << std::endl;

	//Left-values int x 는 메모리의 주소를 가지고있다.
	//Right-values 123는 프로그래머가 임시로 저장된 주소를 가져오기가 어렵다.
	int a = 123;
	//왼쪽 a는 Left-values이나 오른쪽 a는 a의 값을 임시로 복사해온 right-values로 본다.
	a = a + 123;

	//int z = 123;
	//z라는 변수가 메모리에 할당받을때 바로 집어넣어준다.
	//메모리에 garbage 값이 있을수 있기에 초기화 해준다.
	//initialization
	int z = 123;
	
	//x = 123 <- assignment 대입해준다.
	z = 123;

	//initialization와 assignment같아보이지만 다르다.
	//ex)int z(123);으로 사용할 수 있다.
	//initialization의 개념은 생성자,소멸자,오버로딩,오버라이딩에 사용된다.
	
	return 0;
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 함수란?  (0) 2019.06.25
c++ 입력,출력  (0) 2019.06.25
C언어 파일입출력  (0) 2019.01.18
C언어 코딩 함수포인터,구조체  (0) 2019.01.08
C언어 코딩 동적메모리 할당  (0) 2019.01.07

파일입출력

파일을 열고닫기

- 파일 입출력 변수는 FILE 형식의 포인터 변수로 선언한다.

- 파일을 열 때는 fopen() 함수를 이용한다.

- 파일을 닫을 때는 fclose() 함수를 이용한다.


파일 열기함수 fopen()

- fopen() 함수는 파일 경로와 접근방식을 설정할 수 있다.

- 기본 경로는 현재 프로그램의 경로이다.

- 접근방식은 아래와같다

+ r = 파일에 접근하여 데이터를 읽는다.

+ w = 파일에 접근하여 데이터를 기록한다.(파일이 이미 존재하면 덮어쓴다)

+ a = 파일에 접근하여 데이터를 뒤에서부터 기록한다.


파일 입출력함수 fprintf(),fscanf()


파일 입출력과정

- 파일 입출력은 열고,읽고/쓰고,닫기 과정을 꼭해야한다.

- 파일 열때 포인터를 이용해 메모리가 동적으로 할당된다.

- 파일 작업후 파일을 닫지않으면 할당된 메모리는 계속 남는다.

+ex) 메모장을 틀어놓고 닫지 않으면 계속 켜져있다.


기본txt파일저장

실습내용


실습결과


기본txt파일불러와출력하기

실습내용


실습결과


함수 포인터

- C언어에서는 함수의 이름을 이용해 특정한 함수를 호출한다.

- 함수 이름은 메모리 주소를 반환한다.

- 함수 포인터는 특정한 함수의 반환 자료형을 지정하는 방식으로 선언할 수 있다.

- 함수 포인터를 이용하면 형태가 같은 서로 다른기능의 함수를 선택적으로 사용할 수 있다.

- 사용법 : 반환 자료형(*이름) (매개변수) = 함수명;


실습내용

함수 이름은 메모리 주소를 반환

형태가 같은 서로 다른기능의 함수를 선택적으로 사용


실습결과


매개변수 및 반환 자료형이 있는 함수포인터

실습내용


실습결과


함수포인터를 반환하여 사용하기

실습내용


실습결과




구조체

- 여러 개의 변수를 묶어 하나의 객체를 표현하고자 할 때 구조체를 사용한다.

+ 배열과는 다름(배열은 동일한 특성을 가진 변수를 나열한것)

- 캐릭터,몬스터,학생,좌표 등 다양한 객체를 모두 프로그래밍 언어를 이용해 표현할 수 있다.


실습내용


구조체의 정의와 선언

- 하나의 구조체 변수만 사용하는 경우 정의와 동시에 선언을 할 수도 있다.

- 이 경우에는 전역변수로 사용된다.


실습내용

실습결과(위 2개의 실습내용 동일)



구조체 정의하기

- typedef 키워드를 이용한다.

- 익명구조체로도 사용가능하다.

- 구조체가 포인터 변수로 사용되는 경우 내부 변수에 접근할 때 화살표(->)를 사용한다.


실습내용


실습결과


+ Recent posts