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

查看:24
本文介绍了对于 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中main函数的参数2是不同的.指针数组是在编译时在数据部分上方创建的.argv 是指针数组.然后我们应该将 main 函数中的参数声明为指向字符指针的指针,即 **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?

推荐答案

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天全站免登陆