这个星号是什么?

时间:2011-02-15 02:01:34

标签: c

我正在学习c编程,我不明白main方法中的这个星号是什么。

int main(int argc, char* argv[])

6 个答案:

答案 0 :(得分:5)

char* a;表示a是指向char类型变量的指针。

在您的情况下,argv是一个指向指针(或者甚至是其中的几个 - 在您的情况下在argv中指定)指向char类型的变量的指针。换句话说,它是指向argv变量指针的数组(长度为char)的指针。

您甚至可以通过以下方式编写代码:int main(int argc, char** argv)实际上,只要char* achar 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的指针,这个指针会自动找到并适合相应的内存位置。

希望这有帮助,如果没有,我会很乐意帮助我告诉我们。)