在我的程序中,我使用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>
int 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条答案
按热度按时间p3rjfoxz1#
变更:
到
您之前的声明不是
main
可接受的声明,并且atoi
需要char *
类型的参数。sqxo8psd2#
argv应该是一个字符数组,你必须读取字符,然后把它们转换成一个int型。
还有,什么是:
如果你没有参数,那是不可能的,因为程序名是作为参数传递的。
参见:
What does int argc, char *argv[] mean?
你也没有在正确的范围内声明int blk,当你离开if(argc == 0)语句时,变量blk将消失。