C argv指针类型

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)

R S*_*ahu 9

类型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)


NPE*_*NPE 6

第一个参数是argv[1],并且argv[1][0]是该参数的第一个字符.将代码更改为

char* test = argv[1];
Run Code Online (Sandbox Code Playgroud)