Арифметика с указателями типов / - PullRequest
0 голосов
/ 25 декабря 2009

Некоторые примеры сложения и вычитания одинаково типизированных указателей, используя числовые и символьные указатели, пожалуйста. Использование C.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 декабря 2009

Вот практический пример, который извлекает один символ из строки C:

char charAt( char *str, size_t idx) {
    if (idx > strlen (str))
        return '\0';
    return *(str+idx);
}

Или другое, которое заменяет целое число в массиве непосредственно перед ним (без проверки диапазона):

void swapInts( int *base, size_t idx) {
    tmp = *(base+idx);
    *(base+idx) = *(base+idx-1);
    *(base+idx-1) = tmp;
}

В обоих этих случаях *(pointer+offset) идентичен pointer[offfset], но вместо смещения массива используется арифметика указателя:

*(str+idx)        ->     str[idx]
*(base+idx)       ->     base[idx]
*(base+idx-1]     ->     base[idx-1]

Предупреждение: Не используйте эти дословные слова в своей домашней работе, подумайте о них и напишите свою собственную. Если вы скопируете их дословно, вы почти наверняка потерпите неудачу, так как ваши преподаватели, несомненно, тоже будут смотреть эти сайты.

1 голос
/ 25 декабря 2009

Вы можете проверить это , чтобы узнать об арифметике указателей

...