Linux编程中关于getopt的问题?

#include
#include
#include

int main(int argc, char *argv[])
{
int opt;

while((opt = getopt(argc, argv, ":if:lr")) != -1) {
    switch(opt) {
    case 'i':
    case 'l':
    case 'r':
        printf("option: %c\n", opt);
        break;
    case 'f':
        printf("filename: %s\n", optarg);
        break;
    case ':':
        printf("option needs a value\n");
        break;
    case '?':
        printf("unknown option: %c\n", optopt);
        break;
    }
}
for(; optind < argc; optind++)
    printf("argument: %s\n", argv[optind]);
exit(0);

}
最后一个for循环的作用是什么?具体解释下为什么是optind