【问题标题】:what does asterisk( printf ("%s\n",*argv) ) means?星号( printf ("%s\n",*argv) )是什么意思?
【发布时间】:2019-05-27 14:00:57
【问题描述】:

星号(*++argv) 是什么意思?

void main (int argc, char *argv[])
{
 while (--argc)              
  {
    printf ("%s\n", *++argv);
  }

}

【问题讨论】:

标签: c


【解决方案1】:

argv 代表参数向量,它包含 argc + 1(int - 参数计数,最后一个是 NULL 默认情况下。) 元素个数。与 char 数组一样,参数向量的第一个元素保存整个参数向量的地址。因此,通过传递参数向量指针(*argv[]),程序在调用 main 函数时获取 char 类型参数。

要了解如何获取参数向量参数并使用它们,请查看this answer

【讨论】:

  • " 它包含 argc 个元素" --> argv[] 定义了 argc+1 元素。最后一个是NULL
【解决方案2】:

这里argv是一个指向char类型的指针

*argv指向argv数组中的第一个参数字符串,与argv[0]相同,*(argv + 1)argv[1]指向第二个参数字符串等等..

Pointers in C: when to use the ampersand and the asterisk?

【讨论】:

  • argvchar*[],而不仅仅是 char* 。也许您可以解释代码如何遍历其参数,并发布运行时示例。这将使它成为一个更好的答案。
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 2022-06-20
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
相关资源
最近更新 更多