我正在学习c编程,我不明白main方法中的这个星号是什么。
int main(int argc, char* argv[])
答案 0 :(得分:5)
char* a;
表示a
是指向char
类型变量的指针。
在您的情况下,argv
是一个指向指针(或者甚至是其中的几个 - 在您的情况下在argv
中指定)指向char
类型的变量的指针。换句话说,它是指向argv
变量指针的数组(长度为char
)的指针。
您甚至可以通过以下方式编写代码:int main(int argc, char** argv)
实际上,只要char* a
与char a[]
相同,就不会更改。
答案 1 :(得分:2)
这意味着argv
是一个字符指针数组。
答案 2 :(得分:2)
声明char *argv[]
将argv
声明为指向char
的数组(未知大小)。
对于任何类型T,声明
T *p;
将p
声明为指向T的指针。注意*
绑定到标识符,而不是类型;在声明中
T *a, b;
仅将a
声明为指针。
答案 3 :(得分:0)
它表示指针。 char argv[]
声明一个字符数组。 char* argv[]
声明一个字符指针数组或指向字符串的指针。
答案 4 :(得分:0)
这些是从命令行传递到程序的参数。此asterix是指针运算符。
基本上char argv []是一个字符数组,char * argv []是一个指向字符数组的指针。所以这里代表多个字符串就可以了!
请注意:char *argv[]
相当于char * * argv
,因为char argv[]
可以表示为char *argv
。
为了更进一步,你会惊讶于这两个表达是相同的:
int a[5];
int 5[a];
这是因为整数数组是指向内存中一组整数的指针。
因此,a[1]
可以表示为*(a + 1)
,a[2]
表示为*(a + 2)
等。这相当于*(1 + a)
或*(2 + a)
。
无论如何,在C语言开始编程时,指针就像是最重要和最困难的概念之一,所以我建议你在Google上认真看看它!
答案 5 :(得分:0)
这里的“*”是肯定只指定一个指针,将argv [] //可变数量的参数值//放到它可以适合的位置。
因为你不知道用户将传递多少参数,因为它是argc [参数计数]和argv [参数值]。但是我们确实希望为它们分配一个它们可以适合的空间,所以我们使用一个没有定义特定SIZE的指针,这个指针会自动找到并适合相应的内存位置。
希望这有帮助,如果没有,我会很乐意帮助我告诉我们。)