2011-09-20 5 views

답변

3

괄호는 차이가 없습니다.

소위 나선형 규칙은 C 문법의 단순한 사실에서 떨어진다 : *f()*a[] 같은 표현 *(f())*(a[])로 해석되도록 같은 ()[] 같은 후위 연산자, * 같은 단항 연산자보다 더 높은 우선 순위를 가지고 있습니다.

그래서 주어진이 구문 분석

*(*(*foo)())[N] 

같은 상대적으로 복잡한 표현

 foo   -- foo 
    (*foo)   -- is a pointer (parens force grouping) 
    (*foo)()   -- to a function 
(*(*foo)())  -- returning a pointer (parens force grouping again) 
(*(*foo)())[N]  -- to an array 
*(*(*foo)())[N]  -- of pointer 

2

예, 동일합니다. char *(argv[])은 여전히 ​​포인터의 배열을 의미합니다.

char (*argv)[]포인터을 의미하며, 배열은 char입니다.

1
  1. argv[] 그래서 (argv[]) 함수 선언 할 수없는 형식이 아닙니다 - 그것은 우선 순위 작업입니다.
  2. 나선형 규칙을 사용하여 과 마찬가지로 [] (우선 순위 또는 없음)을 찾은 다음 *을 찾습니다.