为什么将c数组声明为变量名而不是类型

anc*_*ild 0 c arrays syntax types declaration

介绍

在c中,声明给定类型的变量的语法如下:

// <variable-type> <variable-name>
// for example:
int foo;
Run Code Online (Sandbox Code Playgroud)

要声明一个指针,可以在类型后面或变量名前面使用asterisk(*)

int* bar;
int *foobar;
Run Code Online (Sandbox Code Playgroud)

该指针也可以不指向单个元素,而是指向给定数据类型的元素数组。 例如,一个字符数组(一个字符串):

char* oneString = "this is a string";
Run Code Online (Sandbox Code Playgroud)

这样的字符串的替代声明(编辑:尽管绝对不是等效的,如注释中所指出),然后如下所示:

//<variable-type> <variable-name>[<count>]
//example:
char anotherString[1024] = "this is another string";
Run Code Online (Sandbox Code Playgroud)

用于比较的c#中,您可以采用另一种方法:

int[] intArray;
Run Code Online (Sandbox Code Playgroud)

主要问题:

什么是在有效的声明数组的考虑变量名而不是它的类型?

作为背景/用于比较

(不是另一个问题,仅是为了提供比较设计决策的手段)
人们创建c#,违反此规则并将数组声明移至类型本身的原因可能是什么?

n. *_* m. 6

这样的字符串的替代声明如下所示

这是另一件事的声明。它不能替代第一个声明。在某些情况下,您可以互换使用它们,而在其他情况下则不能。

在C#中,为了进行比较,您可以反过来使用

不同的语言是不同的。

有效声明变量名而不是类型的数组的考虑因素是什么?

设计考虑是“使用后声明”。这意味着,如果你正在使用这样的变量:a[i]其结果是int,你声明它是这样的:int a[N];。如果这样使用它*a,则声明int *a。如果需要*a[i],请声明int *a[N],如果需要(*a)[i],请声明int (*a)[N]

人们创建c#违反此规则的原因可能是什么

C#的设计人员认为“使用后声明”原则令人困惑,在他们的语言中不需要。您确定它们是否正确。