2011-10-17 1 views
0

함수 호출 안에 문자열 배열을 구성하는 방법이 있습니까? ,함수 호출에서 배열/다른 컨테이너를 생성하여 전달하고 있습니까?

void foo(char * [] strings) 
{ 
    //...does stuff 
} 

그리고 대신에 어떤 방법이 그것을 통과 한 후 먼저 문자 배열을 선언 그리고, 배열 또는 다른 컨테이너 클래스와 같은 함수를 호출하는 예를 들어, 나는이 같은 함수가 있다고 가정 해 ? 기본적

foo({ "a", "b", "c", ...}); 

I는 I 통과 배열의 스트링 중 하나와 일치하고, 그 프로그램을 통하여 변경되므로, I는 지시 함수로 허용 입력이 경과 할 때까지 입력을 위해 사용자에게 프롬프트하는 기능을 가지고 사용자가 입력을 검증합니다. 당신이 "용기"를 언급하기 때문에 당신은

void fun(char *argv[]) 
{ 
    while(*argv) 
     printf("%s\n", *argv++); 
} 

fun((char*[]){"aaa", "bbb", NULL}); 

: 현재 난 그냥 함수 외부를 구성하고 그것을 통과하지만 어떤 식 으로든

+2

여기에 표시되는 특정 언어가 있습니까? C 또는 C++처럼 보이지만 설명이 도움이 될 것입니다. – corsiKa

+0

죄송합니다. C++을 의미합니다. – Blake

답변

2

이 C99에서 작동 한 라인으로 결합 될 수 있는지 궁금하고 아마도 C++을 사용하십시오.이 대답은 제한적인 가치가 있습니다 (확장을 GCC에서 허용하는 컴파일러를 사용하지 않는 한).

+0

안녕하세요. 그래서 타입 캐스트입니까? 그리고 메모리가 그것을 위해 따로 설정되지 않았기 때문에 NULL이 필요합니다. 그래서 함수가 그 크기를 알 수있는 방법이 없습니다. – Blake

+0

복합 리터럴입니다. 당신은 NULL 부분에 대해 맞습니다. 꼭 필요한 것은 아니며 편리합니다. – cnicutar

+0

매우 고맙습니다. 사용자로부터 입력을 받고 받아 들일 수있는 입력인지 확인하지만 프로그램의 한 부분에서 다른 부분으로 받아 들일 수있는 변경 사항은 무엇입니까? 그래서 함수를 작성했지만 char * []을 생성하고 벡터 에 복사하면 더 복잡하고 추악한 것을 알 수 있습니다. 특히 여러 입력에 대해 반복해서 발생하는 경우에 유용합니다. 이것은 내 코드를 훨씬 더 깨끗하고 읽기 쉬운 감사로 만들 것입니다 !!! – Blake