일부 매뉴얼 페이지에서는 다음과 같습니다.https://man7.org/linux/man-pages/man3/memchr.3.html, 다음 내용이 표시됩니다.
void *memchr(const void s[.n], int c, size_t n);
예를 들어https://man7.org/linux/man-pages/man3/bsearch.3.html,
void *bsearch(const void key[.size], const void base[.size * .nmemb],
size_t nmemb, size_t size,
int (*compar)(const void [.size], const void [.size]));
[.n]
, , [.nmemb]
이라는 용어의 의미나 설명은 무엇입니까 [.size]
? 또 다른 점은 무엇을 의미합니까?
답변1
배열이나 가리키는 개체(또는 조합)의 크기를 나타냅니다. 예를 들어,
void *memchr(const void s[.n], int c, size_t n);
s
기록이 기록되고 바이트 배열(또는 그 이상)을 const void * s
가리킵니다 . n
이것이 기호를 소개하겠다고 약속합니다.C99에서는 VLA 구문을 참조합니다.해당 구문선행 점을 사용하지 않으며 사용하기 전에 크기 매개변수를 선언해야 합니다(내가 아는 한 효과가 없습니다 void *
).
이러한 유형의 구문에 대한 유효한 예는 다음과 같습니다.
int main(int argc, char * argv[argc + 1]);
선언은 bsearch
더 복잡합니다. key
size 를 가리키는 단일 객체 size
, 각 size 를 가리키는 요소 배열 base
, 그리고 size 객체에 대한 포인터를 사용하여 함수가 호출됩니다.nmemb
size
compar
size
답변2
문서 계속
이
memchr()
함수는 s가 가리키는 메모리 영역의 처음 n바이트를 스캔하여 c의 첫 번째 인스턴스를 찾습니다.
따라서 이것이 말하는 것은 n
가리키는 위치의 바이트가 s
고려된다는 것입니다.