传递给isdigit(int)的* argv [index](char **)和argv [index](char *)之间的区别

时间:2018-01-14 20:20:55

标签: c

假设我们有

int main(int argc, char* argv[]{...}

由于这个原因

if(isdigit(*argv[index])){...}

索引只是一个int,但是

if(isdigit(argv[index])){...} 

无法正常工作并且告诉我无法将char*argv[index])转换为int,这是isdigit想要传递的参数?编译器如何将char**识别为int而将char*识别为int

2 个答案:

答案 0 :(得分:0)

isdigit需要char参数,而不是char *,argv是char *的数组,因此argv [index]会留下char *。您的选项是* argv [index](如您所发现的)或argv [index] [0]。

答案 1 :(得分:0)

if(isdigit(*argv[index])){...}

argvchar **,因此*argv[index]只是char类型,可以隐式转换为int

argv[index]char *类型,要转换为int,您需要明确转换。