double 자료형의 이름이 double인 이유 C

int는 4바이트

double은 8바이트

2배.

[C]함수 포인터를 쓰는 이유 C

1. 함수를 매개변수로서 받고자 할 때 (1)

main 함수의 기능이 두 수를 PID 연산함수를 거쳐서 다른 수로 변환하고 그 수를 또 실제 모터 출력 값으로 바꾸기 위해 모터출력 변환 함수를 쓴다고 하자.(써야하는 함수가 총 두개인 것이다.)

PID 연산 함수는 double PID(double angle, double goal, double pgain, double igain, double dgain)이라고 하고,
모터출력 변환 함수는 double MOTOR(double angle) 이라고 하자.

main 함수 내부에서 PID 함수를 호출하고, 그 PID 함수 내부에서 MOTOR 함수를 호출하여 최종적인 값을 리턴한다고 하자.
 


즉 main 함수 내부에서 호출한 함수 내부에서 또 함수를 호출할 일이 생기는 것이다.

이런 경우에는 함수를 함수의 매개변수로 받을 필요는 없다. 그냥 호출하면 되는 것이다.  



2.함수를 매개변수로서 받고자 할 때(2)
하지만 함수를 매개변수로서 받고자 할 때가 있다.
그냥 호출하려면 함수를 매개변수로서 쓰지 않고 그냥 그 이름(함수의 이름 역시 주소값이다.)을 호출해서 함수로 쓰면 되지만,
그게 아닐 경우가 있다.

어떤 함수가 두 수를 매개변수로 받고, 그 두 수를 상황에 따라서 다른 함수에 적용시키는 함수라고 하자.
아까 필요한 함수가 딱 정해져있을 때는 함수를 매개변수로서 쓰지 않고 그저 고정된 함수 이름을 넣어주면 되었다.
하지만 두 수를 받아서 상황에 따라 어떤 함수에 넣어줄 것이냐로 결정을 할 때는 함수를 매개변수로서 쓸 수 있다.

이런 경우에 함수의 매개변수를 쓴다.

3.문법적인 특징

그런데, 함수의 이름은 이미 그 자체로서 포인터이다.
만약에 포인터를 함수의 매개변수로서 선언하려면 포인터로서 선언을 해야할 것이다.
그래서 선언시 함수의 이름을 그냥 입력해주면 안되고 
포인터 선언을 해줘야할 것이다.

포인터 선언을 하려면 그 자료의 형을 알아야한다. 그 자료의 형을 알아야 포인터 주소를 통해 접근할때,

어떤 자료형인지 알고 그 시작주소에서 얼마나 읽을 것인지 정해줄 수 있기 때문이다.

그렇다면 함수의 자료형은 무엇인가..?
function(int a, int b, int (*fptr) (int a, int b)) 이런 식으로 정의해줘야한다.

4. 그 외
그리고 c++ 클래스 가상함수에 쓰인다.

goto 함수 C

1. 쓰면 안됨


2.goto A 라고 하면 A 레이블로 이동한다.

레이블을 선언하는 법은 콜론 하나를 붙이면 된다.

세미콜론을 문장 마지막에 붙여야하므로

A:; 와 같은 형태가 된다

얼핏 보면 네임스페이스와 비슷해보일지도

1 2 3 4 5 6 7 8 9 10 다음