본문 바로가기
정보처리이론

1-5. 포인터와 사용자정의함수

by 공부합시다홍아 2020. 10. 17.

포인터와 포인터변수

포인터는 변수의 주소를 말하며, 주소를 제어할 수 있는 기능을 제공한다.
- 포인터 변수를 선언 시 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 *를 붙인다. 
- 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 번지 연산자 &를 붙인다.
- 실행문에서 포인터 변수에 간접연산자 *를 부팅면 해당 포인터 변수가 가리키는 곳의 값을 말한다.
- 포인터 변수는 필요에 의해 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수이다.

※ 메모리 영역
1. 코드 영역 : 실행할 프로그램의 코드가 저장됨
2. 데이터 영역 : 전역 변수와 정적 변수가 저장됨
3. 힙 영역 : 필요에 의해 동적으로 할당되는 영역
4. 스택 영역 : 함수의 매개 변수와 지역 변수가 저장

포인터 변수의 용도
- 연결된 자료 구조를 구성하기 위해 사용
- 동적으로 할당된 자료 구조를 지정하기 위해 사용
- 배열을 인수로 전달하기 위해 사용
- 문자열을 표현하기 위해 사용
- 커다란 배열에서 요소를 효율적으로 저장하기 위해 사용
- 메모리에 직접 접근하기 위해 사용 

main()
{
    int a = 50;	//정수형 a를 선언 후 50으로 초기화
    int *b;		// 정수형 변수가 저장된 곳의 주소를 기억할 포인터 변수
    b = &a;		// 정수형 변수 a의 주소를 포인터 변수 b에 기억
    *b = *b+20;	// b가 가리키는 곳에 20을 더한다.
    
    printf("%d, %d", a, *b);
}

 

사용자 정의 함수

사용자 정의 함수는 사용자가 필요한 기능을 취향대로 만들어 사용할 수 있는 함수.
사용자 정의 함수 사용 시 프로그램 구조가 간단해지고 이해하기가 쉬워진다. 
무엇보다 동일한 코드를 반복 입력하는 수고를 줄일 수 있다.

#include<stdio.h>
void func(int i, int j);	//사용할 사용자 정의 함수 선언
                            //void : 사용할 함수의 리턴 값 X
                            //func : 사용할 함수의 이름 [ 임의 지정 ]
                            //(int i, int j) : 함수에서 사용할 인수, 순서와 자료형 일치해야한다.
main()
{
    int a=3, b=12;
    func(a,b);
    printf("%d, %d\n", a,b);
}

void func(i,j)

int i,j;
{
    i *= 3;
    j /= 3;
    printf("%d, %d\n", i, j);
}

 

728x90