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