main()的第二个参数的char * argv []和char ** argv之间的区别 [英] Difference between char *argv[] and char **argv for the second argument to main()

查看:193
本文介绍了main()的第二个参数的char * argv []和char ** argv之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码1

#include<stdio.h>

int main(int argc, char *argv[])
{
int j;
printf("%d", argv[1][0]);
return 0;
}

代码2

#include<stdio.h>

int main(int argc, char **argv)
{
int j;
printf("%d", argv[1][0]);
return 0;
}

CODE 1和CODE 2 都提供相同的输出.但是CODE 1和CODE 2中主要功能的参数2 不同.指针数组是在编译时在数据部分上方创建的. argv是指针数组.然后我们应该在主函数中声明参数作为指向字符的指针,即** argv.像在CODE 1中那样声明是正确的吗?

CODE 1 and CODE 2 both give same output. but argument 2 of main function in CODE 1 and CODE 2 are different. Array of pointers are created above data section at compile time. argv is array of pointers. Then we should declare argument in main function as pointer to pointer to character i.e., **argv. How it is correct to declare as in CODE 1?

推荐答案

对于c而言,char** xchar* x[]是表达相同事物的两种方式是c的基础.两者都声明该参数接收到一个指向指针数组的指针.回想一下,您可以随时写:

It is fundamental to c that char** x and char* x[] are two ways of expressing the same thing. Both declare that the parameter receives a pointer to an array of pointers. Recall that you can always write:

 char *parray[100];
 char **x;

 x = &parray[0];

然后相同地使用x.

这篇关于main()的第二个参数的char * argv []和char ** argv之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆