【发布时间】:2015-04-08 02:44:48
【问题描述】:
我想参考以下与我的问题相关的代码。
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("%c\n", argv[1][1]);
return 0;
}
通常在创建指针之前,首先必须存在变量。但在 C 命令行参数中,*argv[] 不是指已定义的char argv,而是实际上是一个二维数组,其中不仅包含地址,还包含命令行参数的元素。这怎么可能发生。我会欣赏这背后的理论。
我的第二个问题是指针数组如何包含命令行参数的元素?
【问题讨论】:
-
这是由操作系统和 C 运行时库的启动代码完成的。
-
另外,考虑到一个函数必须被调用才能执行——但是谁打电话给你的
main()?魔法!至于“指针数组如何包含命令行参数的元素”——因为命令行参数是字符串,而在 C 中,字符串通常由指向其第一个字符的指针来引用。 -
相关(如果不是重复):stackoverflow.com/q/12332/694576