我理解 C 中指针和数组的概念。我的问题是它们的语法。这是什么:
char* var;
char var*;
你的前提是错误的。第一个是指针类型,第二个很好......没什么,它不是有效的 C++(C 也不是)。静态数组更像这样:
char var[15];
另一方面,动态数组通常使用向量来完成。
数组和指针之间的混淆是 C 编程语言的遗留问题,其中*(a+n)
和a[n]
含义相同,因此我们可以使用a[n]
even ifa
是指针,而不是数组。不过,这在 C++ 中不是很惯用。
char* var;
声明var
为“指向”的指针char
。char var*;
不是有效的声明。
一个数组将被声明为:char var[10];
.
这是一个指针:
char* var;
这在语法上是不正确的,并且不会编译:
char var*;
C++中的数组和指针不是一回事,但语法可能会让它们看起来像。您可以像这样在 C++ 中声明一个数组:
char ary[] = {'a','b','c'};
...这是有效的——将创建一个包含 3 个元素的数组。
您还可以创建一个带有指针的函数:
void foo(char* bar)
{
// ...
}
...并通过它ary
:
foo(ary);
...它将编译并运行良好。这可能会让你相信指针和数组是一回事。但他们不是。 bar
上面的foo
不是一个数组——它是一个指向数组第一个元素的指针。