2013-01-02 3 views
0

이것은 대답하기가 쉬울 수도 있지만 구문을 이해하지 못하는 것 같습니다. 내가 필요로하는 것은 2 차원 배열이며, 첫 번째 요소는 CSTRING의 포인터이고 두 번째 요소는 카운터입니다.2D 배열의 포인터 C

이 목적은 스레드 번호를 기반으로 스레드에 단어 목록을 스레딩하고 전달하는 것입니다. 마치 char wordlists [100] [10] (100 개의 단어와 각 10 개의 스레드에 대한 10 개의 목록 1)와 같이 정의 된 것처럼 처음에는 모든 목록을 파일의 단어로 채운 다음 특정 목록을 쓰레드를 처리하고 일단 쓰레드가 주 쓰레드에 다시 연결되면 나는 조인 쓰레드와 관련된 단어 목록을 다시 채우고 새 단어로 쓰레드를 다시 시작합니다.

전반적으로 포인터의 두 번째 배열 (첫 번째 요소 포인터는 두 번째 카운터)을 만들기위한 구문을 얻지 못합니다. 또한 특정 스레드에 대한 단어가 시작되는 배열 주소를 전달하는 것이 가능합니다. 그래서 1000 단어의 전체 2D 배열을 전달해야합니까? (그래서 그 스레드 100 단어가 저장된 시작 주소를 전달할 수)

도움 주셔서 감사합니다!

편집 :: 만약 당신이 스레드를 통해 큰 단어 파일을 처리하는 비슷한 방법에 대한 더 좋은 제안이 있다면, 그들에게 더 많은 아이디어를 공개하도록 제안하십시오.

+0

스레드를 통해 배열을 분할하려고합니까? 원래 테이블 정의는 아마 당신의 질문에 도움이 될 것입니다, 왜냐하면 저는 이것이 당신이 처음 생각하는 것처럼 복잡 할 것이라고 생각하지 않기 때문입니다. – WhozCraig

+0

@WhozCraig 예 100 개의 단어 목록을 10 개 만들고 각각의 스레드에 1 개의 목록을주고 주 스레드와 합류하면 목록을 다시 채우고 단어 파일이 완전히 읽힐 때까지 다시 시작하려고합니다. –

+0

확인. 더 큰 (더 중요한 것은 ** 완료 **) 목록에서 나온 스레드로 분할하여 보내려고하는 것의 * 소스 *가 있습니까? – WhozCraig

답변

0

제가

*[]는보다 낮은 우선 순위가 포인터의 2D 배열을위한 신택스를 얻을 말아. 따라서 워드리스트는 char에 대한 포인터 배열의 배열입니다.

char *wordlists[100][10]; 
0

포인터의 2D 배열을 선언 (T를 입력합니다)

T *array[width][height]; 

을 또한 단지 배열 어드레스를 전달할 수있다 [...] 그래서하지 않아도 1000 단어의 전체 2D 배열을 전달 하시겠습니까?

당신은 다른 것을 할 수 없습니다. C에서 배열은 항상 값이 아닌 포인터로 전달됩니다.

0

comp.lang.c FAQ의 (관련 부분은 있지만 전체를 권하고 싶습니다.) 혜택을 누릴 수 있습니다.

아마도 C (및 C와 유사한 언어)를 만지는 사람에게는 필수 읽기이며, 특히 눈에 띄지는 않습니다 (특히 정의되지 않은 명령문 동작, null 포인터 값 및 사용, 경우에 따라 포인터 및 포인터 배열).

+0

또는 요약 된 버전, 적어도 : http://www.faqs.org/faqs/C-faq/abridged/ –