编码:
char *argv[]
与:
相同char **argv
或者会:
char *string1;
int *int_array;
完全相同:
char string1[];
int int_array[];
答案 0 :(得分:5)
绝对不是。一个是指针,另一个是数组。
但是,在参数方面,char *param
相当于char param[]
或char param[16]
。
参数声明为“类型数组”应调整为 “类型指针”[...]
答案 1 :(得分:3)
有几种情况可以使用[]
。根据具体情况,它会有不同的处理方式:
char *argv[]
相当于char **argv
int x[] = {1, 2, 3}
是一种让编译器为您计算数组元素的方法int x[]
被视为暂定声明,并在其他地方提供存储空间struct
的最后一位成员 - 这是灵活成员声明,可让您将可变大小的数组“嵌入”{{1} } struct
可让您“动态”构建数组,而无需声明特殊变量。如您所见,(const int []) {1, 2, 3}
和*
仅在第一种情况下得到相同的处理方式;在所有其他情况下,治疗方法都不同。
答案 2 :(得分:1)
没有!嗯,这取决于上下文,但显然它们不是同一类型。
*
是一个指针,而[]
是一个数组。
指针是一个变量,其值是另一个变量的地址,即存储单元的直接地址。与任何变量或常量一样,您必须在使用它来存储任何变量地址之前声明指针。在varname
之前,指针变量声明的一般形式是*
数组是对象列表。
我建议查找指针,因为它们是C和C ++的重要组成部分。
这是一个了解他们的好地方https://www.tutorialspoint.com/cprogramming/c_pointers.htm(也是我从上面引用的地方)
答案 3 :(得分:1)
没有
数组的概念与指针的概念有关。实际上,数组的工作方式非常类似于指向第一个元素的指针,实际上,数组总是可以隐式转换为正确类型的指针。
指针和数组支持相同的操作集,两者具有相同的含义。主要区别在于指针可以分配新地址,而数组则不能。
在cplusplus了解详情。