정리 노트‎ > ‎

C 언어

C 언어의 선언(Declaration)에 대한 해석 방법

  • ID를 찾고 그것을 기준으로 연산자 결합 우선 순위를 따져서 문장을 만들어 해석해 나간다.
  • 기호에 대한 문장 해석 방법
    • * : a pointer to
    • [N] : an array[N] of
    • (args) : a function(args) returning
  • 예제
    int* foo[10];
    // foo -> an array(10) of a pointer to int

    void (*(*signal)(int,void(*)(int)))(int);
    // signal -> a pointer to a function(int,void(*)(int))
    //           returning a pointer to a function(int) returning void.

__cdecl 호출 규약

 

const 키워드 해석 방식에 대한 예제

#include <stdio.h>

/*
  const 키워드는 바로 앞에 오는 키워드를 꾸민다.
  단, const가 가장 앞에 오는 경우에는 const 바로 뒤의 키워드를 꾸민다.
 */

void const_test_f1(const int* pi)
{
  int i = 3;

  *pi = 1;  // error
  pi = &i;
}

void const_test_f2(int const* pi)
{
  int i = 3;

  *pi = 1;  // error
  pi = &i;
}

void const_test_f3(int* const pi)
{
  int i = 3;

  *pi = 1;
  pi = &i;  // error
}

void const_test_f4(const int* const pi)
{
  int i = 3;

  *pi = 1;  // error
  pi = &i;  // error
}

int main(void)
{
  int i = 0;

  const_test_f1(&i);
  const_test_f2(&i);
  const_test_f3(&i);
  const_test_f4(&i);

  return 0;
}
 
Comments