在我的程序中,我使用atoi()函数从argv中提取int . 我用的时候
#include <stdlib.h>
我收到以下错误:
cachesim.c:20: warning: passing argument 1 of ‘atoi’ from incompatible pointer type
但是,如果我不包含stdlib.h我根本没有收到任何错误,我的代码正常运行 . 为什么是这样?
#include <stdlib.h>
#include <stdio.h>
main(int argc,int ** argv){if(argc == 0){
int blk = 32;
int i;
for(i = 1; i <argc; i){
if(strcmp(argv [i],“ - b”)== 0){
if(i 1 <= argc - 1)
blk = atoi(argv [i 1]);
}
}
}}
2 回答
更改:
至
您之前的声明不是
main
的可接受声明,atoi
需要char *
类型的参数 .argv应该是一个字符数组,你必须读取字符,然后将它们转换为int .
另外,是什么:
如果你没有参数?这应该永远不可能,因为程序名称作为参数传递 .
看到:
What does int argc, char *argv[] mean?
你也没有在正确的范围内声明int blk,当你离开if(argc == 0)语句时,变量blk将会消失 .