разница между int * i и int * i

Я конвертирую файл заголовка для DLL, написанный на C в Delphi, поэтому я могу использовать DLL.

Мой вопрос в том, в чем разница между

int* i 

а также

 int *i 

Я конвертирую первое в

 i: PInteger; 

Но я не уверен, что правильное преобразование для второго в Delphi.

из моего понимания первый – это простой типизированный указатель. Вторая – переменная указателя. но я не уверен, в чем разница.

int* i и int *i полностью эквивалентны

Что касается C, они оба делают то же самое. Это вопрос предпочтения. int* i ясно показывает, что это тип указателя int. int *i показывает, что звездочка влияет только на одну переменную. Таким образом, int *i, j и int* i, j будут создавать i как int-указатель, так и j как int.

Они одинаковые. Два разных стиля – это причуда в синтаксисе Си.

Некоторые люди предпочитают int* i; потому что int* – тип i.

Другие предпочитают int *i; потому что парсер привязывает звезду к переменной, а не к типу. Это становится значимым, когда вы пытаетесь определить две переменные в строке. Независимо от того, как вы его пишете:

  int* i,j; int*i,j; int *i,j; 

в каждом из них i является указателем на int, а j – просто int. Последний синтаксис делает это более ясным, хотя, даже лучше, будет:

  int j, *i; 

или лучше всего:

  int *i; int j; 

Это случайность синтаксиса C, что вы можете написать либо int *i либо int* i или даже int * i . Все они анализируются как int (*i) ; IOW, * привязан к объявлению, а не спецификатору типа. Это означает, что в объявлениях, подобных

 int* i, j; 

только i объявляется как указатель; j объявляется как обычный int. Если вы хотите объявить оба из них в качестве указателей, вам придется писать

 int *i, *j; 

Большинство программистов на C используют T *p в отличие от T* p , так как a) объявления в C являются ориентированными на выражение, а не объектно-ориентированными, и b) он более точно отражает синтаксис объявления.

Предположим, что у вас есть массив указателей на int, и вы хотите получить целочисленное значение в элементе i . Выражение, соответствующее этому значению, равно *a[i] , а тип выражения – int ; таким образом, объявление массива

 int *a[N]; 

Когда вы видите, что фраза «имитация объявления использует» применительно к программированию на С, это то, что имеется в виду.

Нет никакой разницы. Вы можете ввести его как int * i если хотите; все они означают одно и то же: «i – указатель на int».

Это то же самое.

Некоторые разработчики предпочитают нотацию int* i так как тип i явно «указатель на int», тогда как int *i кажется менее читаемым.

int* i , int * i , int*i и int *i абсолютно точно эквивалентны. Это связано с компилятором C (и его совместимыми системами типа C), игнорируя пустое пространство в streamе токенов, генерируемое в процессе анализа исходного кода.

Некоторые люди предпочитают использовать int* i думая, что он делает код более чистым (поскольку директива указателя рассматривается как часть типа в их умах). Некоторые люди предпочитают использовать int *i думая, что он делает код более чистым (поскольку тип является int, и у них есть «i-указатель»). Ни одна из этих технологий не делает ничего по-другому после того, как компилятор работает через исходный код. Когда вы сомневаетесь, имитируйте существующий стиль.