c - argv 命令行参数容器的真实属性

标签 c arrays pointers

我知道命令行参数由 argv [] 数组中的字符串指针指向。即 argv [0] 包含指向程序名称的指针,而 argv [1] 包含指向第一个命令行参数的指针。

但我注意到 argv 在互联网上有一个非常不同的应用,写在下面。我已经成功编译它并打印出第二个参数的第三个字符。

#include <stdio.h>  
    int main(int argc , char *argv []) {        
        printf("%c\n", argv [1][2]);                
        return 0; } 

我有两个由此使用引起的问题。

argv 的真实维度是多少?它停在两点还是更多?

我注意到程序员使用 %c 访问和打印指定内容的代码。现在,我们总是可以解析指向 %s 的指针(字符串指针)并期望它打印出字符集直到空终止符。

据我所知,%c 只能在其自身包含字符的数组中使用。

char yadhavan [] = yadhavan is a boy;
 printf ("%c", yadhavan [3]);

有人可以解释一下 %c 是如何与指针数组一起使用的吗?

多一点解释总是非常受欢迎的!

最佳答案

argvchar*[] 类型,包含多个字符串(命令行参数)。
argv[i]char* 类型并包含一个字符串。
argv[i][j]char 类型,包含一个字符。

What is the true dimension of argv? Does it stop at two or is there more?

这取决于有多少个命令行参数。

Could someone please explain how %c has been used with a pointer array?

可以声明 char 指针并使它们指向字符串,或者只使用 char 数组并保存字符串:

char* str="string";

或者

char str[]="string";

在这两种方式中,都可以使用以下方式引用字符:

printf("%c",str[3]);

argv其实就是一个char*的数组。因此,可以从中引用单个字符。

关于c - argv 命令行参数容器的真实属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391037/

相关文章:

c++ - 像时尚一样在网格中格式化 C++ 中的输入

c++ - 将指向结构的指针转换为指向该结构的唯一成员的指针

c - 调用 yylex() 后全局指针设置为 NULL

C 编程指令 #include<stdio.h> printf

objective-c - 在 Swift 中查找而不是过滤数组

arrays - 如何使用 Swift 2.0 从 Parse 中的数组中删除对象

c++ - 指针的初始化

c - 如何使用cuda对沿行方向的巨大二维矩阵进行归约? (每行的最大值和最大值的索引)

c - 68000,可移植JIT库

python - 如何使 C 包装器(用 32 位 Python 编写)在运行 64 位 Python 的新机器上工作?