【发布时间】:2017-06-27 20:02:24
【问题描述】:
由于我对 C 很陌生,所以我还没有了解指针。我想检查命令行参数是否为整数,但在单独的函数中,以便我传入 argv 数组的指针。
int main(int argc, char* argv[]){
if(check(argv)){
// Do stuff to argv[1]
}
}
int check(char* p){
// Test wether p+1 is int
return 1;
}
我已经尝试了几件事,主要是导致奇怪的 printf(在打印取消引用的指针以测试值时)。
int i = atoi(argv[1]);
当然工作得很好。但是由于指针是唯一传递给函数的东西,所以我瘫痪了。
【问题讨论】:
-
argc 应该在索引 argv 之前使用
-
将 'int check(char *p)' 更改为 'int check (char *p[])' 或 'int check (char **p)'
-
当前代码无效。编译器告诉你了。尝试以当前版本为起点尝试它是没有意义的。
-
@AnT 询问关于一段工作代码的问题。唔。现在这是一个绝妙的主意,init!不,编译器没有告诉我我的各种实验。有些通过时没有警告并且不会执行。
-
@Felix:我不确定你所说的“工作”是什么意思。您尝试使用
argv参数调用check通常会从编译器产生诊断消息,关于参数类型不匹配(如果check有原型)或关于声明定义不匹配(否则)。这些诊断消息准确地告诉您:代码无效。这是必须首先解决的问题。
标签: c pointers int argv dereference