2013-08-01 3 views
1

Как я должен назвать это программирования C:Как называется?

char *fileNames[3] = {"string1", "string2", "string3"}; 

массив указателей, массив, указывающий на строки, или что?

Не очень лень искать ответ в другом месте, я не нашел его.

Обновление 1: Я назвал вышеуказанные (независимо от того, что это) имена файлов, потому что я фактически использую его для хранения имен файлов, но это могло быть что-то в моем вопросе.

и Спасибо за огромные дебаты, но есть так много ответов, что даже трудно решить, какой из них подходит для меня.

+5

Read [Разница между 'полукокса * ул [] и' символ ул [] [] 'и как оба магазина в памяти?] (Http://stackoverflow.com/questions/17564608/what-do-the-array-name-mean-in-case-of-array-of-char-pointers/17661444 # 17661444) Я объяснил диаграммами, а также сравним их с 2-D строками. –

+2

«Массив указателей на символ» или просто «массив строк» ​​или просто «строковый массив» –

+0

Ну, технически это массив указателей (длины 3), так вот что я бы назвал? –

ответ

3

Для такого рода вопрос, есть cdecl. В английском языке, ваш тип

declare fileNames as array 3 of pointer to char. 
6

Вы можете читать простые C/C++ объявления справа налево, но вы должны следовать за Clockwise/Spiral Rule.

Это массив указателей на символы.

+2

Я думаю, что OP понимает, что это * *, (он), он просто спрашивает, что * называть * его. В этом контексте «массив указателей на символы» является плохим именем, поскольку он описывает его * тип * без информации о его * значении *. (В частности: он игнорирует тот факт, что указательные символы являются начальными символами строк стиля C.) – ruakh

+1

Глупости. Типы C считываются по часовой стрелке. См. Http://c-faq.com/decl/spiral.anderson.html. – nes1983

+0

"Массив указателя, массив, указывающий на строки, или что?" Я не думаю, что ты прав. –

6

Название fileNames представляет собой массив из 3 char* (указатели на символы), которые указывают на 3 строковых литерала в вашей декларации. он называется: «массив указателей на символ» или «массив строк», потому что каждый индекс указывает на строку. Вы должны сделать их постоянными:

const char *fileNames[3] = {"string1", "string2", "string3"}; 
+0

Это неправильно. Это не массив указателей 3 'char *'. Это будет char ** []. Это массив из трех указателей на символ. – Wiz

+0

@Wiz означает, что символ 'char *' является указателем, он запутывает? –

+0

@GrijeshChauhan Он написал «указатели 3 символа». Это неверно. Это три указателя на указатель на символ. – Wiz

0

Вы можете назвать это как

массив символьных указателей

+0

Но почему бы не '' указательный массив' **? ** или 'указывать на строки' **? ** это не ответ .-- Не-голосование. Должен улучшить ответ, иначе прокомментируйте это. –

Смежные вопросы