【问题标题】:C : what are these arguments to main?C : main 的这些论点是什么?
【发布时间】:2013-07-28 02:51:02
【问题描述】:

我正在阅读一本书,以便重新学习 C++,并且我不断看到 main 的以下论点:

int main(int nNumberOfArgs,char* pszArgs[]))

我不确定这些论点是什么意思。我做了一些研究,我想我有一个基本的了解。

我在 Matlab 中做了很多编程,我经常创建一个函数:

function output=myfunct(varargin)

其中 varargin 是一个关键字,表示任何参数。我可以给它任何东西作为论据。 myfunct(1,2,'a string',objectvariable)

“nargin”是一个关键字,表示参数的数量。

所以我理解主函数的这些参数的方式是:

int main(int nargin,char* varargin[])

我说的有道理吗?你能更好地给我解释一下吗?我也不太明白如何使用指针和引用。

【问题讨论】:

  • 现在是 C 还是 C++?选择一种,它们是不同的语言。
  • 另请注意,使用名称“argc”和“argv”是惯用的,如int main(int argc, char *argv[])。任何其他名称都非常不常见,并且不受欢迎。
  • 顺便说一句,任何体面的初学者编程指南都会描述这些参数的含义,例如,K&R C.(Link)
  • @Adad Dayos 我完全同意 h2co3 K & R 对初学者来说是一个不错的选择......它可以很容易地解释你的事情并且自己尝试会很有趣,相信我!

标签: pointers arguments main


【解决方案1】:

可以这样想: int nNuberofArgs 声明一个整数,其大小与下一个参数的大小相同。下一个参数是 char* pszArgs [],这将创建一个程序长度的数组,因此 nNumberofArgs 指的是指向以零结尾 (z) 的字符串 (ps) 的指针,换句话说,创建足够的空间来运行程序

【讨论】:

    【解决方案2】:

    这有点不同。这些参数是指命令行参数。因此,当您从命令行调用程序时,如下所示:

    $ myProg arg1 arg2 arg3
    

    nNumberOfArgspszArgs 的值将是

    nNumberOfArgs = 3
    
    pszArgs = {"arg1", "arg2", "arg3"}
    

    另外,既然你提到了指针,pszArgs 的类型就是char* [],因为字符串是chars 的数组,而数组只是指向第一个元素的指针。

    【讨论】:

    • @PHIfounder 我正要这么说。此外,pszArgs 的类型是char **,即。 e.指向char 的指针,它不是指向char 的指针数组,因为它在函数参数中。
    • 小心。 pszArgs 应该等于 {"myprog","arg1", "arg2", "arg3"}
    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多