Почему c-массив объявлен с именем переменной, а не с типом - PullRequest
0 голосов
/ 22 июня 2019

Введение

В c синтаксис объявления переменной данного типа выглядит следующим образом:

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

Чтобы объявить указатель , вы используете звездочку (*) либо за типом, либо перед именем переменной.

int* bar;
int *foobar;

Этот указатель также может указывать не на один элемент, но для массива элементов данного типа данных .
Например, массив символов (строка):

char* oneString = "this is a string";

The альтернативное объявление (редактировать: хотя определенно не эквивалентно, как указано в комментариях) такой строки, тогда выглядит следующим образом:

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

In c # для сравнения , у вас все наоборот:

int[] intArray;

Главный вопрос:

Каковы были соображения по эффективному объявлению массива в имя-переменной , вместо его типа?

В качестве контекста / для сравнения

(не предназначен длядругой вопрос, только для обеспечения средств сравнения проектных решений)
По каким причинам люди, создающие c #, могли порвать с этим правилом и перенести объявление массива в сам тип?

1 Ответ

6 голосов
/ 22 июня 2019

Альтернативное объявление такой строки выглядит следующим образом:

Это объявление другой вещи.Это не альтернатива первой декларации.В некоторых контекстах вы можете использовать их взаимозаменяемо, в других контекстах вы не можете.

В c # для сравнения у вас все наоборот:

Разные языки различны.

Каковы были соображения по эффективному объявлению массива по имени переменной вместо ее типа?

При проектировании учитывалось "объявление следует за использованием".Это означает, что если вы используете переменную, подобную этой: a[i], а результат - int, вы объявляете ее так: int a[N];.Если вы используете это как *a, вы объявляете int *a.Если вам нужно *a[i], объявите int *a[N], а если вам нужно (*a)[i], объявите int (*a)[N].

По каким причинам люди, создающие c #, могли порвать с этимrule

Разработчики C # решили, что принцип "объявление следует за использованием" сбивает с толку и не нужен в их языке.Вы решаете, были ли они правы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...