如何填充argv?

use*_*079 1 c arrays string pointers argv

#include <stdio.h>

int main(int argc, char* argv[]){
  printf("argc: %d\n",argc);
  for(int i=0;i<sizeof(argv);i++){
    printf("argv[%d] %s\n",i,argv[i]);
  }
  return(0);
}
Run Code Online (Sandbox Code Playgroud)

编译好,在GNU/linux发行版下的gnome终端下使用它

printTest one\ two three
argc: 3
argv[0] /data/local/tmp/printTest
argv[1] one two
argv[2] three
argv[3] (null)
Run Code Online (Sandbox Code Playgroud)

我故意让一个白色空间逃脱,argv似乎表现得非常奇怪.

这种行为是否正常?什么是null?为什么argv创建一个空指针而不是只提供一个更短的数组?

dus*_*uff 8

sizeof(argv)没有意义 - 它是指针的大小(平台上的4个),恰好恰好比argv这个情况下的值的数量多一个.

请改用argc此处.