Вопрос по c, c++ – Основные аргументы по умолчанию в C / C ++ [дубликаты]

-3

На этот вопрос уже есть ответ здесь:

Что означает int argc, char * argv []? 8 ответов

Я возился с проектами на C / C ++ и заметил это:

C ++

#include <iostream.h>

int main (int argc, const char * argv[]) {
    // insert code here...
    cout << "Hello, World!\n";
    return 0;
}

а также

C

#include <stdio.h>

int main (int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    return 0;
}

Так что мне всегда было интересно, что именно делают эти аргументы по умолчанию в C / C ++ в int main? Я знаю, что приложение по-прежнему будет компилироваться без них, но для чего они служат?

Смотрите, напримерstackoverflow.com/questions/3024197/... Fredrik Pihl
@Kirilenko ну ладно :) Не знал, что С позволил это. mwerschy
Они предоставляют доступ к аргументам командной строки, предоставленным программе. Joe
@mwerschy: обаchar*[] а такжеchar** действительны. md5
argc: количество аргументов; argv: вектор аргументов. Это аргументы командной строки для программы. И не правда лиchar** argv в С? mwerschy

Ваш Ответ

4   ответа
6

переданные программе в командной строке. Например, если у меня есть программаa.out и я призываю это так:

$ ./a.out arg1 arg2 

Содержаниеargv будет массив строк, содержащих

[0]"a.out" - Имя файла исполняемого файла всегда является первым элементом[1]"arg1" - другие аргументы[2]"arg2" - что я прошел

argc содержит количество элементов вargv (как и в C, вам нужна другая переменная, чтобы узнать, сколько элементов в массиве при передаче в функцию).

Вы можете попробовать это самостоятельно с помощью этой простой программы:

C ++

#include <iostream>

int main(int argc, char * argv[]){
    int i;
    for(i = 0; i < argc; i++){
        std::cout << "Argument "<< i << " = " << argv[i] << std::endl;
    }
    return 0;
}

C

#include <stdio.h>

int main(int argc, char ** argv){
    int i;
    for(i = 0; i < argc; i++){
        printf("Argument %i = %s\n", i, argv[i]);
    }
    return 0;
}
argv должен быть argv [] я думаю .... как его массив learner
char ** argv также допускается, так как массив может распасться на указатель в C. Я считаю,char * argv[] действительно предпочтительнее, но я привык к этому, и это экономит мне 1 символ и немного быстрее набирает текст. Kninnug
1

ARGC а такжеARGV как аргументы командной строки передаются в main () в C и C ++.

ARGC будет количество строк, на которые указываетARGVобычно это на единицу больше, чем количество аргументов, которые вы передаете с терминала, так как обычно первым является имя программы.

1

argc количество аргументов, а аргументы хранятся в виде массива строк с нулевым символом в конце (argv). Как правило, программа без переданных аргументов командной строки будет по-прежнему храниться вargv; а именно, имя, используемое для выполнения программы (которое не всегда будет там, в зависимости от того, как программа выполняется, но я не могу вспомнить, каковы обстоятельства для этого).

2

вам нужно использовать аргументы в основной функции .argc - это число аргументов, а массив указателей-символов содержит список аргументов. обратитесь по этой ссылкеhttp://www.cprogramming.com/tutorial/c/lesson14.html

Похожие вопросы