main(int argc, char *argv [ ] )에 대해서
중복 가능성:
main()에 대한 인수는 무엇입니까?
int argc, char *argv [ ]는 무엇을 의미합니까?
모든 프로그램은 로 시작됩니다.main(int argc, char *argv[])정의.
무슨 뜻인지 모르겠어요.프로그램에 사용하지 않으면 왜 이런 주장을 사용하는지 설명해 주시면 감사하겠습니다.왜 그냥 안 돼?int main()?
프로그램 이름이 다음 요소 중 하나입니까?*argv[]그리고.argc의 인수 개수입니다.*argv[]에 전송되는 다른 인수는 무엇입니까?*argv[]어떻게 보내요?
의론argc그리고.argv의main는 프로그램에 인수를 송신하는 방법으로 사용됩니다.가장 일반적인 방법은 사용자가 입력할 수 있는 good ol' 단말기를 사용하는 것입니다.여기 그 말이 있다.cat는 파일을 가져와 표준 출력에 출력하는 프로그램입니다.stdout).
프로그램은 다음 인수의 수를 수신합니다.argc그리고 논쟁의 벡터argv위의 인수는 2(프로그램명은 첫 번째 인수로 카운트)이며 인수 벡터는 []를 포함합니다.cat,file, null] (마지막 요소는 늘 포인트).
일반적으로 다음과 같이 씁니다.
int // Specifies that type of variable the function returns.
// main() must return an integer
main ( int argc, char **argv ) {
// code
return 0; // Indicates that everything went well.
}
프로그램이 인수를 필요로 하지 않는 경우, 다음과 같이 적어도 유효합니다.main- 다음과 같이 기능합니다.
int main() {
// code
return 0; // Zero indicates success, while any
// Non-Zero value indicates a failure/error
}
C 언어의 초기 버전에서는,int전에main이것은 암시된 바와 같이.오늘날 이것은 오류로 간주됩니다.
POSIX 준거 시스템(및 Windows)에서는 세 번째 파라미터를 사용할 수 있습니다.char **envp프로그램 환경 변수의 벡터를 포함합니다.의 인수 목록의 추가 변형main함수는 존재하지만 비표준적이기 때문에 여기서는 자세히 설명하지 않겠습니다.
또한 변수의 이름은 규칙이며 실제 의미는 없습니다.다른 사람을 혼란스럽게 하지 않도록 항상 이것을 고수하는 것이 좋지만, 똑같이 정의하는 것도 유효합니다.main~하듯이
int main(int c, char **v, char **e) {
// code
return 0;
}
그리고 두 번째 질문에서는 프로그램에 인수를 보내는 몇 가지 방법이 있습니다.POSIX 규격의 기능 패밀리를 보는 것을 추천합니다만, 아마 사용하기 쉬울 것입니다.("command arg1 arg2") 「 」, 「 」의 .system()모든 시스템에서 동작할 수 있는 것은 아니기 때문에 일반적으로는 눈살을 찌푸리게 됩니다.해 본 없으면 .bash ,zsh시스템에 되어 있는 셸, "*NIX " " " 、system()실패합니다.
예를 들어 프로그램이 호출될 때 명령줄에서 프로그램에 인수를 전달하기 위한 것입니다.
$ gcc mysort.c -o mysort
$ mysort 2 8 9 1 4 5
위의 프로그램mysort는 몇 가지 명령줄 파라미터를 사용하여 실행됩니다.안에서.main( int argc, char * argv[])이 경우,
Argument Count, argc = 7
7개의 인수(프로그램에 포함)가 있기 때문에
Argument Vector, argv[] = { "mysort", "2", "8", "9", "1", "4", "5" };
다음은 완전한 예입니다.
$ cat mysort.c
#include <stdio.h>
int main( int argc, char * argv [] ) {
printf( "argc = %d\n", argc );
for( int i = 0; i < argc; ++i ) {
printf( "argv[ %d ] = %s\n", i, argv[ i ] );
}
}
$ gcc mysort.c -o mysort
$ ./mysort 2 8 9 1 4 5
argc = 7
argv[ 0 ] = ./mysort
argv[ 1 ] = 2
argv[ 2 ] = 8
argv[ 3 ] = 9
argv[ 4 ] = 1
argv[ 5 ] = 4
argv[ 6 ] = 5
[그건]char문자열 "2", "8" 등은 일부 문자 대 번호 변환 함수를 사용하여 숫자로 변환할 수 있습니다.atol() (링크)]
와 함께argc(카운트) 및argv(프로세서 벡터) 응용 프로그램이 실행되었을 때 전달된 인수의 수와 값을 얻을 수 있습니다.
이 방법으로 파라미터를 사용할 수 있습니다(예:-version응용 프로그램이 다른 방식으로 동작하기 시작할 때).
단,int main(void)C의 프로토타입으로요.
세 번째(덜 알려져 있고 표준적이지 않은) 프로토타입이 있으며, 세 번째 인수는 다음과 같습니다.envp환경변수가 포함되어 있습니다.
자원:
argc프로그램에 전달되는 인수 수를 의미합니다. char* argv[]전달된 인수입니다. argv[0]항상 프로그램 이름 자체입니다.100% 확신은 못하지만 제 생각엔int main()는 C/C++로 유효합니다.
argc실행 시 프로그램에 지정된 명령줄 인수 수입니다.argv는 이러한 인수를 포함하는 문자 배열(C 문자열 배열)입니다.명령줄 인수가 필요없다고 판단되는 경우 메인 명령어라인 인수가 필요없음을 선언할 수 있습니다.void대신 인수:
int main(void) {
/* ... */
}
이 두 가지 프로토타입만이 정의되어 있습니다.main표준규격에 따라 다르지만 컴파일러에 따라서는void뿐만 아니라.Wikipedia에서 더 많은 정보를 얻을 수 있습니다.
Comp.lang.c FAQ는 이 질문에 대해 설명합니다.
"main()의 올바른 선언은 무엇입니까?"in 질문 11.12a.
argc명령줄 인수의 수 및argv는 명령줄 인수를 나타내는 문자열 배열입니다.
그러면 프로그램에 전달된 인수에 반응할 수 있는 옵션이 제공됩니다.아무것도 기대하지 않는 경우는,int main.
다음과 같은 매개 변수를 사용하여 응용 프로그램을 실행할 수 있습니다.app -something -somethingelse.int argc는 이들 파라미터의 수를 나타내고 있습니다.char *argv[]는 실제 파라미터가 어플리케이션에 전달되는 어레이입니다.이렇게 하면 응용 프로그램 내에서 해당 사용자와 함께 작업할 수 있습니다.
언급URL : https://stackoverflow.com/questions/3898021/regarding-mainint-argc-char-argv
'programing' 카테고리의 다른 글
| Vue Mixin 계산 함수 통과 매개 변수 (0) | 2022.07.11 |
|---|---|
| Vue에서 cognito 사용자 세션을 유지하는 방법 (0) | 2022.07.11 |
| 최종 콜백의 Axios 응답 개체가 정의되지 않았습니다. (0) | 2022.07.11 |
| Vuex 이거.$store가 정의되지 않았습니다. (0) | 2022.07.11 |
| Vuex4 스토어를 감시하는 Vue3가 콜백 기능을 실행하지 않음 (0) | 2022.07.11 |