2013-09-28 2 views
4

Хорошо, поэтому мне любопытно, как вы могли бы использовать массив указателей для доступа к значению в индексе. Как, например:Как отредактировать индекс массива указателей?

printf("%c", (*character)[0]); 

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

+3

Укажите определение 'character'. –

+0

«используя массив указателей для доступа к значению в индексе» - я этого не понимаю. –

+0

Это просто общее описание массива, который я мог бы создать, который хранит символы. Как char char [4] = {a, b, c, d}. Если массив был указателем, как мне получить доступ к индексу 0 и, возможно, изменить его, если бы мне это понравилось? –

ответ

3

Предполагая характер char character[] = {'1'};

character[someIndex] means someIndex[character] means *(character+someIndex) 

Если это то, что вы хотели знать. Так что вы должны делать что-то вроде:

printf("%c", *(character+0)); 

что эквивалентно

printf("%c", *character); 

printf("%c", character[0]); 

Просто пропустили - по поводу этого заявления

индекс массива указателей?

Пожалуйста, сообщите Arrays are not Pointers. Если это вас смутило.

+0

Почему вы добавляете '0'? – smac89

+0

@ Smac89 По этой же причине вы добавили круглые скобки. –

+0

@ Smac89 :: Просто, чтобы понять OP. – Sadique

1

Из Вашего вопроса я замечаю, что у вас есть объявить указатель на символ что-то вроде этого

char *character="something";

и теперь вы хотите получить доступ к его содержимое с помощью индексации.
Так почему беспокойство, Независимо от того, есть ли вы объявляете массив указателей или array.You может получить доступ к его содержимое любым следующим образом: -

printf("%c",character[1]); // общий метод

или с помощью указателя записи
printf("%c",*(character+1));

или
printf("%c",*(1+character)); // переместительный закон

или более удивительно вы можете использовать следующий метод слишком
printf("%c",1[character]);

1

char * arr [20] = {"Stackoverflow"};

Это означает, что у вас есть указатель-указатель типа char, где 20 адресов памяти хранятся в массиве размера 20. 1-я ячейка памяти в arr [0] указывает на строку «Stackoverflow», а остальные из них не назначены (так что вы получите значение мусора или, возможно, ошибку сегментации). Теперь, если вы хотите получить доступ к 0-й ячейке памяти, просто выполните это:

printf ("% s \ n", arr [0]);

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