0

我理解 C 中指针和数组的概念。我的问题是它们的语法。这是什么:

char* var;
char var*;
4

3 回答 3

16

你的前提是错误的。第一个是指针类型,第二个很好......没什么,它不是有效的 C++(C 也不是)。静态数组更像这样:

char var[15];

另一方面,动态数组通常使用向量来完成。

数组和指针之间的混淆是 C 编程语言的遗留问题,其中*(a+n)a[n]含义相同,因此我们可以使用a[n]even ifa是指针,而不是数组。不过,这在 C++ 中不是很惯用。

于 2012-05-04T20:36:47.817 回答
7

char* var;声明var为“指向”的指针charchar var*;不是有效的声明。

一个数组将被声明为:char var[10];.

于 2012-05-04T20:37:18.067 回答
3

这是一个指针:

char* var;

这在语法上是不正确的,并且不会编译:

char var*;

C++中的数组和指针不是一回事,但语法可能会让它们看起来像。您可以像这样在 C++ 中声明一个数组:

char ary[] = {'a','b','c'};

...这是有效的——将创建一个包含 3 个元素的数组。

您还可以创建一个带有指针的函数:

void foo(char* bar)
{
// ...
}

...并通过它ary

foo(ary);

...它将编译并运行良好。这可能会让你相信指针和数组是一回事。但他们不是。 bar上面的foo不是一个数组——它是一个指向数组第一个元素的指针。

于 2012-05-04T20:42:15.690 回答