【发布时间】:2020-09-18 09:27:19
【问题描述】:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char *lineptr[] = {"abc","defg","hijk"};
char **lp = lineptr;
int nlines = 3;
while(nlines-- > 0){
printf("%s\n", *lineptr++);
}
while(--argc)
printf("%s%s",*++argv,(argc>1) ? " " : "");
printf("\n");
return 0;
}
【问题讨论】:
-
lineptr是一个数组(指针),argv是一个指针(指向指针)。数组和指针是不同的。请参阅comp.lang.c. faq 的第 6 节。 -
我认为 argv 也是一个指针数组,因为它们的声明是相同的。那么为什么它们有相同的声明,但 lineptr 是一个数组而 argv 是一个指针呢?
-
当在参数中使用时,数组语法对于指针来说是很吸引人的。即
int main(int argc, char *argv[])100% 与int main(int argc, char **argv)完全相同(int foo(int bar[])也与int foo(int *bar)100% 完全相同)。 -
????????????非常感谢