2013-11-22 2 views
0

мне нужна помощь, чтобы понять следующий фрагмент кода C:Что означает * это в этом C-коде?

позволяет сказать, что у меня есть структура, как:

typedef struct 
{ 
    char *letter; 
    int dataSize; 
    int Number; 
}Page; 

затем:

я в том же коде следующую строку, предположим, что x является определенной переменной:

Page *window[x], *it = 0 ; 

Мне интересно, что это делает.

+0

Страница представляет собой тип так декларирование 'Page х,' делает «х» переменной типа страницы и декларацию 'страницы * он,' делает «это» указатель переменная страницы и объявление 'Page * it = 0;' делает «это» указателем на переменную страницы и заставляет ее не указывать ни на что. –

ответ

1

Вы создаете 2 указателя. Вы можете разделить строку вверх в:

Page *window[x]; // = 0; //you should set it to 0 (or NULL) to prevent nasty bugs. 
Page *it = 0; 

*itNULL является -initialized указатель на Page объекта.

+0

Это не то же самое, что и код OP. В вашей версии вы также инициализируете окно. –

+1

@ DanielRose: вы совершенно правы, спасибо. Я думаю, что что-то мешает мне создать неинициализированный указатель :) – Stefan

2

* означает «указатель». Вы должны это знать, если пишете C-код. В противном случае вам действительно нужно получить базовый учебник или вводный текст.

В вашем коде поле структуры означает letter имеет тип char *, то есть это указатель на символьные данные.

Второе означает, что window представляет собой массив значений x типа Page *, и что it имеет тип Page *, тоже.

При объявлении нескольких переменных в одной строке следует помнить, что * является синтаксически частью имени переменной, а не типом.

Таким образом, int a, *b; действителен и объявляет одно целое число a и один указатель на целое число b.

+0

@ user3021170 Это странно, но нормально. :) – unwind

-1

его указатель на переменную, она содержит физический адрес памяти, он начинается в

+0

Благодарим за помощь. Мне все еще интересно, почему ему назначено 0, это то, что я действительно хочу понять. – user3021170

1
Page *window[x], *it = 0 ; 

такая же, как

Page *window[x]; 
Page *it = 0 ; 

так это указатель на страницу структуры инициализируется 0

1

Это указатель на структуру типа страницы. Это эквивалентно:

Page *window[x]; 
Page *it = 0; 
Смежные вопросы