Mic*_*wen 2 c c++ pointers argv
我很困惑如何使用指针来使这段代码工作:
#include<stdio.h>
int main(int argc, char *argv[]){
char* test = argv[1][0];
printf("hello %s\n", test);
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
incompatible integer to pointer conversion initializing
'char *' with an expression of type 'char'; take the address with &
[-Wint-conversion]
Run Code Online (Sandbox Code Playgroud)
类型argv[1][0]是char.
类型argv[1]是char*.
你需要使用:
char* test = argv[1];
Run Code Online (Sandbox Code Playgroud)
如果您使用以下命令调用您的程序:
program "First Arguent" "Second Argument"
Run Code Online (Sandbox Code Playgroud)
然后,在main,argc等于3.
argv[0] = "program"
argv[1] = "First Arguent"
argv[2] = "Second Arguent"
argv[3] = NULL
Run Code Online (Sandbox Code Playgroud)
鉴于这种情况,
argv[1][0]计算到第一个字符argv[1],它等于'F'.
如果这是你想要的,你可以使用:
char test = argv[1][0];
Run Code Online (Sandbox Code Playgroud)
如果你想获得整个第一个参数,那么你需要使用:
char* test = argv[1];
Run Code Online (Sandbox Code Playgroud)
第一个参数是argv[1],并且argv[1][0]是该参数的第一个字符.将代码更改为
char* test = argv[1];
Run Code Online (Sandbox Code Playgroud)