2013-03-07 3 views
0

나는이 함수 선언이 :이해 C의 함수 인수

void gaussian_blur 
(
    const unsigned char* const inputChannel, 
    unsigned char* const outputChannel, 
    const float* const filter 
) 
{..} 

내가 새로 온 나는 기본적인 튜토리얼을 통해 간 및 포인터와 상수의 개념을 이해 한 C.에를,하지만 난 이해가되지 수 이 인수 목록이 의미하는 것.

누구나 무슨 뜻인지 설명 할 수 있습니까?

+2

당신이 어디에 문제가, 포인터를 이해하는 경우에 그것을 다시 뱉어 : 즉, 당신은 항상 당신이 여기에 이해하지 못하는 것을 던져 너무 속일 수 너무 많이 있다면

? – poitroae

+0

'const unsigned char * const'는 무엇입니까? 'unsigned char * const' 타입의 불변 변수입니까? 어떤 유형입니까? – Alex

+0

이것은 포인터가 상수이고 목표 데이터가 일정하다는 것을 의미합니다. – scones

답변

4
const unsigned char* const inputChannel; 

입력 채널은 상수 서명되지 않은 char에 대한 상수 포인터입니다.

unsigned char* const outputChannel; 

OutputChannel은 부호없는 char에 대한 상수 포인터입니다.

const float* const filter 

필터는 상수 float에 대한 상수 포인터입니다.

상수 포인터 - 포인터 변수가 보유한 주소는 으로 변경할 수 없습니다.

상수 데이터 - 데이터가 읽기 전용/상수로 처리되며 을 수정할 수 없습니다.

+0

@Alex 아무 문제가 없다는 것을 잘 알고 있습니다. –

3

읽기 오른쪽으로 왼쪽으로 :

const unsigned char* const inputChannel 

inputChannelunsigned char 상수 상수 포인터입니다.

2

당신은 당신이이 질문에 태그를 시간이 당신에게

그리고 당신 '을 저장할 수 있습니다

주의 사항 아래로 스크롤 태그의 정보 링크에서 보면 Spiral rule에 대한 링크는 C에서 이해할 수없는 것들의 의미를 해독하는 데 매우 유용합니다.

기본 정보는 다음과 같습니다. o 그런 다음 변수를 오른쪽으로 이동 한 다음 한 번에 한 요소 씩 왼쪽으로 이동하십시오.

inputChannel,       // inputChannel is a 
const inputChannel,      // constant 
* const inputChannel,     // pointer 
char* const inputChannel,    // to a char 
unsigned char* const inputChannel,  // which is unsigned 
const unsigned char* const inputChannel // which is constant 

그래서 상수 포인터이고 무엇은 (부호없는 문자)를 가리키는 또한 일정 :이 경우는 단지 왼쪽으로 이동하여 변수의 오른쪽에 아무것도 없기 때문에. 아주 쉽습니다. http://cdecl.org/을하며 영어 (보통)

+0

감사합니다. 그리고 cdecl에 대한 링크에 감사드립니다. 그것을 좋아했다;) – Alex

+0

@Alex - NP, 그것은 handly 링크이다. 코드를 오프라인에서 읽는다면/컴퓨터가 아니라 수동으로하는 방법을 아는 것이 중요하다. – Mike