ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C프로그래밍] 10주차. 포인터
    C 2024. 5. 8. 14:41
    • 포인터는 주소를 가지고 있는 변수
    • *포인터는 사용 전에 반드시 초기화를 해야한다*

     

    ㅡ  주소 연산자 &

    • 변수의 주소를 계산하는 연산자
    • 변수 i의 주소 = &i

    ㅡ  간접 참조 연산자 *

    • 포인터가 가리키는 값을 가져오는 연산자
    • 우선순위가 매우 높다 (괄호 다음으로)

     

    ㅡ  #1 변수의 주소 출력

    • &변수이름

    ㅡ  #2 a 와 b 바꾸는 함수

    • swap(& a, &b);

    ㅡ  포인터 연산

    • 증가(++), 감소(--), 덧셈(+), 뺄셈(-) 만 가능
    포인터 타입 ++ 연산 후 증가 값
    char 1
    short 2
    int 4
    float 4
    double 8
    • 증가 연산 예제

    • 간접 참조 연산자와 증감 연산자
    수식 의미
    v = *p++ p ㅡ> v 대입 후 p 증가
    v = (*p)++ p ㅡ> v 대입 후 가리키는 값에 증가
    v = *++p p 증가 후 p ㅡ> v 대입 = *(++p) 
    v = ++*p p 가리키는 값 가져온 후 증가 ㅡ> v 대입 = ++(*p)
    • 간접 참조 연산자와 증감 연산자 예제

    결과값

     

    ㅡ 함수와 포인터

     

    · 값에 의한 호출 (call-by-value)

    • C의 기본적인 방법
    • 인수의 이 매개 변수로 복사된다.

    · 참조에 의한 호출 (call-by-reference)

    • C에서는 포인터를 이용하여 흉내낼 수 있다.
    • 인수의 주소가 매개 변수로 복사된다.

    · 보통은 값에 의한 호출 사용

    · 함수 외부에서 선언된 변수의 값을 변경할 땐 참조에 의한 호출 사용

     

    *초기화가 안된 포인터 사용 X*

    *p = &number;

     

    *포인터가 아무것도 가리키지 않으면 NULL로 초기화 ㅡ> 하드웨어로 감지 가능, 유효성 여부 판단 쉽다*

     

    *포인터 타입 = 변수의 타입*

    int i <> double *pd

    double형 포인터에 int형 변수의 주소를 대입 ㅡ> 오류

     

    · 두 개 이상의 결과를 반환하는 함수

    결과값

     

    ㅡ 포인터와 배열

     

    · 배열 이름이 바로 포인터이다.

    · 포인터는 배열처럼 사용 가능

    · 배열 이름은 첫번째 배열 원소의 주소

    a[0] = *a

    a[1] = *(a+1)

    a[2] = *(a+2)

    a[n] = *(a+n)

     

     

    ㅡ  #3 배열 처리 함수

    • 평균을 계산하고 배열을 출력하는 두가지 함수
    • double get_array_avg(int values[], int n) 배열 요소의 평균값 계산
    • void print_array(int values[], int n) 배열 요소들 출력

    배열 요소의 평균을 계산하는 함수
    배열 요소를 화면에 출력하는 함수
    결과값

     

    ㅡ  #4 배열의 값 역순 출력

    • 포인터를 이용
    • &array[i]
    • *(p + i)

    결과값

    'C' 카테고리의 다른 글

    [C프로그래밍] 13주차. 파일  (0) 2024.06.05
    [C프로그래밍] 12주차. 구조체  (0) 2024.05.29
    [C프로그래밍] 11주차. 문자열  (0) 2024.05.22
    [C프로그래밍] 9주차. 함수  (0) 2024.05.02
Designed by Tistory.