1 - 함수
함수란 x라는 값을 입력했을 때, y라는 값이 나오는 과정

입니다.
위 사진을 예시로 들자면, int는 함수의 자료형을 정수로 지정한 것이고 char, float 등과 같은 함수의 자료형입니다.
그리고 main은 그냥 함수의 이름입니다.
main 뒤에있는 (x,y,)는 함수의 매개변수입니다.
매개변수란, main이라는 함수 안에서 사용할 값을 담는 자리입니다.
또 다른 예시입니다.

여기서 main함수 밖에서 a를 선언한 이유는, a를 main 안에서만 사용하는것이 아닌, main 밖에서도 사용할 것이기 때문입니다.
그리고 a의 매개변수 x와 y 모두 int로 정수 자료형입니다.
그리고 int sum = a(5,10)을 사용해, 변수 a의 매개변수인 x, y의 값을 각각 5와 10으로 선언했고, sum은 매개변수 x와 y를 더한값인 15로 선언했습니다.
그 이후 sum을 출력한 뒤, 0을 반환한 뒤, 종료한다는 return 0;을 사용했습니다.
그리고 다시 a 안에서, return x+y, 즉 x와 y를 더한 값인 15를 반환한 후에 코드를 종료합니다.

2 - 포인터
포인터는 컴퓨터의 주소, 즉 위치를 저장하는 변수입니다.
일반 변수는 보통
int a = 20; 과 같이 쓰지만, 포인터 변수는 int *p = &a; 와 같이 씁니다.
*p는 a가 저장된 주소가 위치가 필요하기 때문에 주소를 나타내는 &과 함께 사용해야합니다.

이 코드에서 printf("%d\n",a); 는 그냥 a의 값인 10을 출력하고, printf("%d\n",*p); 는 p가 가리키는 값인 a를 출력합니다.
그리고 printf("%p\n",&a); 는 a의 주소값이 나오고, printf("%p\n",p); 는 p의 저장된 주소값인 a의 주소값이 나오게 됩니다.
제 노트북에서 실행했을 때, 주소는 0x7ffdbead8bb4이 출력되었고, 데스크탑에서 실행했을 때는 0x7fff06c157d4이 출력되었습니다.
이러한 결과로 인해, 주소는 기기마다 다르게 출력된다는 것을 알 수 있습니다.
