Я не понимаю, в чем смысл объявить первый параметр, если на самом деле он не используется в функции. Тем не менее, эта функция может выглядеть
void stringPointerOperation(const char *str,
const char *firstPtr,
const char *secondPtr)
{
std::cout << firstPtr << std::endl;
if (secondPtr < firstPtr)
{
const char *p = firstPtr;
firstPtr = secondPtr;
secondPtr = p;
}
std::ptrdiff_t n = secondPtr - firstPtr;
std::cout << "There are " << n
<< " characters between pointers "
<< (const void *)firstPtr
<< " and "
<< (const void *)secondPtr
<< std::endl;
}
Вот демонстративной программа
#include <iostream>
#include <cstddef>
void stringPointerOperation(const char *str,
const char *firstPtr,
const char *secondPtr)
{
std::cout << firstPtr << std::endl;
if (secondPtr < firstPtr)
{
const char *p = firstPtr;
firstPtr = secondPtr;
secondPtr = p;
}
std::ptrdiff_t n = secondPtr - firstPtr;
std::cout << "There are " << n
<< " characters between pointers "
<< (const void *)firstPtr
<< " and "
<< (const void *)secondPtr
<< std::endl;
}
int main()
{
const char *s = "My name is Lewis Russell";
stringPointerOperation(s, s + 11, s + 16);
return 0;
}
Его выход
Lewis Russell
There are 5 characters between pointers 0x8048b7a and 0x8048b7f
Тип станд :: ptrdiff_t просто ЬурейиЙ для некоторого знакового типа Int. Обычно это int
. Поэтому, если вы хотите, вы можете заменить std::ptrdiff_t
на int
.
Если эти заявления
std::cout << str << std::endl;
std::cout << "First character=" << *firstPtr << std::endl;
std::cout << "Second character =" << *secondPtr << std::endl;
также должны присутствовать в функции, то вы можете включить их в код, который я показал.
void stringPointerOperation(const char *str,
const char *firstPtr,
const char *secondPtr)
{
std::cout << str << std::endl;
std::cout << "First character=" << *firstPtr << std::endl;
std::cout << "Second character =" << *secondPtr << std::endl;
std::cout << firstPtr << std::endl;
if (secondPtr < firstPtr)
{
const char *p = firstPtr;
firstPtr = secondPtr;
secondPtr = p;
}
std::ptrdiff_t n = secondPtr - firstPtr;
std::cout << "There are " << n
<< " characters between pointers "
<< (const void *)firstPtr
<< " and "
<< (const void *)secondPtr
<< std::endl;
}
Вы правы в использовании любого типа цикла. Какая у вас самая лучшая попытка? –
cout << firstptr << endl; cout << upperPtr - lowerPtr << endl; – jschultz410