【发布时间】:2016-11-26 15:40:19
【问题描述】:
我有以下功能:
int func(int carg, const char **varg) {
//code ...
}
我的理解如下:
varg 是指向第二个指针的指针。第二个指针指向一个字符。这个字符是...
either: a single char (1st case)
or: a char that constitutes the first char of a char array. (2nd case)
这种理解正确吗?
我不明白的是为什么您要将指针作为参数传递给指针。
如果您想(通过引用)将单个字符传递给函数,您可以简单地编写:
int func(int carg, const char *v) {
//code ...
}
在第二种情况下,您想(通过引用)将 char 数组传递给函数,可以使用相同的函数(这一次,v 指向传递给函数的数组的第一个元素):
int func(int carg, const char *v) {
//code ...
}
总之,我不明白您为什么要使用指向指针的指针作为函数的参数。
我的具体情况是下面的 main 函数声明:
int main(int carg, const char **varg);
**varg 处理命令行上的参数。 可以使用 varg[1]、varg[2] 等访问命令行参数。 因此,很明显,**varg 所做的只是将命令行参数保存在一个数组中。但这可以通过以下代码以更简单的方式实现:
int main(int carg, const char *varg);
我错过了什么?
【问题讨论】:
-
抱歉,您需要成为 3 星程序员才能理解这些内容。你需要升级。
-
为什么你的问题标题是 C 代码的 sn-p?
-
@bolov 我应该读哪些书来理解这些东西? (并成为三星级程序员)?
-
C 是严格按值传递的!你不能在 C 中通过引用传递。指针是一流的类型。 Q你的问题将在任何好的 C 书籍中得到回答,并且已经在这里多次回答。我们不是辅导网站。
-
你是对的。这可以用一个指针来完成。这只是让 C 做这件事的人的选择。这个问题类似于问“当他们只能使用单个数组时,为什么会有人使用多维数组?”。 (我不是说数组和指针是一回事,这只是一个类比)
标签: c arrays pointers parameter-passing