2014-09-18 7 views
3

Я борюсь с проблемой в C. Проблема в том, как получить указатель на элемент в массиве, если я знаю указатель на предыдущий элемент в массиве?указатель на следующий элемент массива

Предположим, у меня есть строка

s = "Hello World" 

и у меня есть указатель на «о» в строке

char *p = strchr(s, 'o') 

Как получить указатель на о дал я просто знаю, р?

ответ

5

Если вы знаете, что указатель на элемент массива не указывает на последний элемент массива, выражение p+1 будет указывать на следующий элемент массива. Это правило работает независимо от типа элемента массива, если базовый тип указателя совпадает с типом элемента массива: компилятор выполняет все необходимые настройки при выполнении добавления.

Следовательно, в вашем strchr пример печати *(p+1) напечатает пробел.

Demo.

+0

Любая идея, почему я могу получить это предупреждение: «sumIt_dec.c: 93: 11: warning: присваивание делает целое число из указателя без приведения [включено по умолчанию] "? – Lokesh

+1

@Lokesh Это может произойти, если вы присваиваете результат выражения указателя переменной числового типа. – dasblinkenlight

+0

Aha! Задача решена. Благодаря! Я думал, что проблема заключается в моей манипуляции указателем на следующий элемент. – Lokesh

4

Как dasblinkenlight уже вложил вы можете использовать "Pointer Arithmetic" для этого.

Если у вас есть указатель (p), и вы добавляете 'x' к нему, вы получаете элемент «xth» из местоположения, в котором находится указатель.

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