This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
6年前关闭。
有人能解释一下下面代码中发生了什么吗?
if( strncmp( argv[i], cascade_opt, cascade_opt_len) == 0 )
                cascade_name = argv[i] + cascade_opt_len;

我的猜测是,这两行检查用户输入了哪种级联(因此是argv[i]),然后如果第一个级联长度字符相同,它将argv[i]和级联长度连接起来。然而,这对我来说似乎没有意义,因为为什么要将一个名称与一个整数连接起来?
也,
if( argv[i][nested_cascade_opt_len] == '=' )

我一直认为argv[I]最多可以是一个一维数组,它记录用户输入的内容。但不知怎么的,这条线使它看起来像是一个二维数组。有人能告诉我这到底是什么意思吗?

最佳答案

cascade_name = argv[i] + cascade_opt_len;

argv属于char **类型。索引它意味着argv[i]char *类型,即字符串。向char *中添加一个整数会使指针前进许多字符。这也许可以写得更清楚如下:
cascade_name = &argv[i][cascade_opt_len];

它删去第i个参数casecade_opt_len的第一个argv[i]字符,并将剩余的字符串赋给cascade_name
if( argv[i][nested_cascade_opt_len] == '=' )

argv是字符串数组,因此argv[i]是第i个参数,argv[i][nested_cascade_opt_len]是索引nested_cascade_opt_len处的字符。这将检查该字符是否为等号。

关于c - 查询人脸检测代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15731296/

10-11 23:12
查看更多