2016-11-15 2 views
0

Я хочу иметь постоянный массив символов, из которого каждый элемент массива должен быть передан функции во время выполнения. Я написал их следующим образом:Const Strings Array in C

const char *IntenistyVal[] ={"1","2","3","4","5"}; 

и Функция

Test(const char *pText) 

(я не могу изменить это, поскольку это одна из стандартной функции библиотеки). Теперь, когда я пытаюсь вызвать функцию «Test», как

Test(IntensityVal[0]) 

Я также попытался

const char * const IntenistyVal[] ={"1","2","3","4","5"}; 

В обоих случаях я получаю сообщение об ошибке, как «Выражение должно иметь постоянное значение». Может ли кто-нибудь помочь мне, где я делаю Неправильно.

+0

Это может быть опечатка в объявлении массива? 'IntenistyVal' против' IntensityVal' –

+2

У вас есть массив указателей на символ, а не массив символов. – Jens

+0

MSVC отлично работает после исправления опечатки, предполагая, что вам нужен массив строк, а не одна строка. –

ответ

0

Константная массив полукокса будет

const char IntensityVal[] ={'1', '2', '3', '4', '5', 0}; 

Окончательные 0 важно, если вы хотите, чтобы передать его в виде строки. Но я не уверен, что это то, чего вы действительно хотите. Это поможет, если вы не скроете фактическую функцию как Test, но сообщите нам о фактической функции стандартной библиотеки и о том, чего вы хотите достичь (т. Е. У вас есть XY-Problem).

+0

@ Jens: Пример, который вы представили, подразумевает константу sring. Но мне нужен массив константных строк. –

+0

@Nagendra Babu: Если вы хотите массив постоянных строк, вы должны сказать это в своем вопросе. Тем не менее, по какой-то причине вы сказали, что хотите массив символов. – AnT

+0

@Jens: Стандартная библиотека - Tiva c Grlib. Я хочу, чтобы инициализировать текст виджета Canvas, указывая на элементы массива, а не на жесткую кодировку, поскольку он ограничивает мое приложение. –