Вы, вероятно, хотите, чтобы понять командную строку обработки аргументов в C. Когда вы получаете некоторый список аргументов программы, например,
myprog friday tuesday sunday
В языке Си аргументы основной функции() которые предоставляют количество аргументов (4 в этом случае) и массив символов char * (указатели) к этим аргументам.
Обратите внимание, что sizeof argv вычисляется во время компиляции, а значение представляет собой размер указателя на вашей системе (4 или 8).
Во-первых, мы объясним аргументы основной функции,
int main(
int argc, //an integer count of the number of arguments provided to the program
char* argv[] //an array of pointers to character arguments
)
Ваша главная функция затем определяется (по-видимому), распечатываются аргументы, начиная с крайнего правого аргумента и работать обратно в ноль-го аргумента ,
{
int argv_sizeof = argc; //you cannot use sizeof argv the way you specified
//argv_sizeof = 4 in your example, but argv[4] is not valid
//argv_sizeof has a value that is one past the rightmost element of argv[]
while(argv_sizeof) //use argv_sizeof > 0 here; argv_sizeof is 4,3,2,1,0
//when argv_sizeof reaches 0, the while loop terminates
{
printf("%s",argv[--argv_sizeof]); //here you pre-decrement argv_sizeof (3,2,1,0)
//then use argv_sizeof to index into argv[]
//then you print the string at argv[3], argv[2], argv[1], argv[0]
}
//argv_sizeof = 0 here
return 0; //you return the value 0 from the main function
}
'-sizeof argv' является незаконным. Таким образом, ваша программа не может быть запущена из командной строки, поскольку она даже не может компилироваться. – Paul92
Результат должен быть чем-то вроде «Ошибка: не может применяться« - »к rvalue». –
Даже если он скомпилировался, он застрял бы в бесконечном цикле, когда вы его запустили, и сработает, когда вы выйдете за пределы argv. 'while (sizeof argv)' не заканчивается. – indiv