C 这个星号是什么意思?

C 这个星号是什么意思?,c,C,我正在学习c语言编程,我不明白这个星号在main方法中是什么意思 intmain(intargc,char*argv[])表示argv是字符指针数组。表示argv是字符指针数组。表示指针charargv[]声明一个字符数组char*argv[]声明字符指针数组或字符串指针。它表示指针charargv[]声明一个字符数组char*argv[]声明字符指针数组或字符串指针。这些是从命令行传递到程序的参数。此asterix是一个指针运算符 基本上char argv[]是字符数组,char*argv[]

我正在学习c语言编程,我不明白这个星号在main方法中是什么意思


intmain(intargc,char*argv[])
表示
argv
是字符指针数组。

表示
argv
是字符指针数组。

表示指针
charargv[]
声明一个字符数组
char*argv[]
声明字符指针数组或字符串指针。

它表示指针
charargv[]
声明一个字符数组
char*argv[]
声明字符指针数组或字符串指针。

这些是从命令行传递到程序的参数。此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语言编程时最重要也是最难掌握的概念之一,所以我建议你在谷歌上认真研究一下它

这些是从命令行传递到程序的参数。此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语言编程时最重要也是最难掌握的概念之一,所以我建议你在谷歌上认真研究一下它

声明
char*argv[]
argv
声明为指向
char
的指针数组(大小未知)

对于任何类型的T,声明

T *p;
T *a, b;
声明
p
作为指向T的指针。注意
*
绑定到标识符,而不是类型;在宣言中

T *p;
T *a, b;

只有
a
声明为指针。

声明
char*argv[]
argv
声明为指向
char
的指针数组(大小未知)

对于任何类型的T,声明

T *p;
T *a, b;
声明
p
作为指向T的指针。注意
*
绑定到标识符,而不是类型;在宣言中

T *p;
T *a, b;

只有
a
被声明为指针。

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

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


您甚至可以这样编写代码:
intmain(intargc,char**argv)
,实际上,只要
char*a
char a[]
相同,就不会有任何更改表示
a
是指向
char
类型变量的指针

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

您甚至可以这样编写代码:
intmain(intargc,char**argv)
,实际上,只要
char*a
char a[]
相同,就不会有任何更改。这里的“*”肯定只指定了一个指针,用于将argv[]//变量数量的参数值//放置到合适的位置

因为您不知道用户将传递多少个参数,因为它是argc[argument count]和argv[argument value]。但是我们确实想给它们分配一个适合它们的空间,所以我们使用一个没有定义具体大小的指针,这个指针将自动找到并适合适当的内存位置

希望这有帮助,如果没有,我很乐意提供帮助,请让我知道:)

这里的“*”确实只指定了一个指针,用于将argv[]//变量数量的参数值//放置到它可以容纳的位置

因为您不知道用户将传递多少个参数,因为它是argc[argument count]和argv[argument value]。但是我们确实想给它们分配一个适合它们的空间,所以我们使用一个没有定义具体大小的指针,这个指针将自动找到并适合适当的内存位置


希望这有帮助,如果没有帮助,我会很乐意帮助的,请告诉我:)

嗯,不完全是这样。在此上下文中,
argv
是指向
char
的指针,因为函数参数中的数组大括号实际上并不表示“array”。这一点非常正确。我应该想到的,不完全是。在这种情况下