【发布时间】:2013-08-23 10:41:07
【问题描述】:
对于下面给出的程序,为什么第一个printf 为argv 和&argv 打印不同的值?第二个printf 为a 和&a 打印相同的值。传递给程序的参数变量的存储机制是什么?
#include<stdio.h>
int main(int argc, char * argv[]){
char * a[10];
printf("%d %d\n\n",argv,&argv);
printf("%d %d",a,&a);
return 0;
}
将命令行参数存储到字符串数组的机制是什么
【问题讨论】:
-
printf("%d %d",a,&a);这里 &a 和 a 将指向同一个地址...所以你不需要同时打印它们。并使用 %p 而不是 %d 来打印地址。
-
我认为那是因为 argv 指针已初始化,但您的 a 指针没有,所以它得到了相同的地址
标签: c arrays pointers command-line-arguments