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

时间:2019-06-22 07:06:22

标签: c arrays types syntax declaration

简介

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

// <variable-type> <variable-name>
// for example:
int foo;

要声明指针,请在类型后面或变量名前面使用星号(*)

int* bar;
int *foobar;

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

char* oneString = "this is a string";

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

//<variable-type> <variable-name>[<count>]
//example:
char anotherString[1024] = "this is another string";

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

int[] intArray;

主要问题:

variable-name (变量名称)(而不是类型)中有效声明数组的考虑因素是什么?

作为背景/用于比较

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

1 个答案:

答案 0 :(得分:6)

  

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

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

  

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

不同的语言是不同的。

  

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

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

  

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

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