Кажется, вы могли бы быть немного запутался о сроках.
Объект обычно имеет адрес. Это местоположение в памяти, где находится объект. Некоторые временные объекты не имеют адресов, потому что их не нужно хранить. Такое исключение является временным «4» объектом в выражении (2+2)*3
Указатель - это объект, который хранит адрес другого объекта. Следовательно, для каждого типа имеется соответствующий указатель. int
имеет int*
, std::string
имеет std::string*
и т. Д.
Теперь вы пишете о «адресах указателей». Они существуют. В конце концов, я написал, что указатель - это объект, и, следовательно, он имеет свой собственный адрес. И вы можете сохранить этот адрес в другом указателе. Например, вы можете сохранить адрес и int*
в int* *
. Но вы действительно намеревались это сделать? Или вы имели в виду «адрес , на который ссылается указателем»?
Теперь вы указываете высоту и вес в качестве примеров. Стандартный способ поменять их на C++ - это просто std::swap(width, height)
. Обратите внимание на std::
, который является префиксом для стандартных функций библиотеки C++. std::swap
поменяется почти всем.ints, floats, wives. (К/к).
У вас есть другая функция обмена, видимо. Он принимает два указателя на целые числа, что означает, что он хочет адреса двух целых чисел. В этом случае их легко обеспечить. width
- целое число, а &width
- его адрес. Это может быть сохранено в аргументе указателя int* a
. Аналогичным образом, вы можете сохранить адрес &height
в аргументе int*b
. Собирая это вместе, вы получаете звонок swap(&width, &height);
Как это работает? Функция swap(int*a, int*b)
имеет два указателя, удерживающих адрес двух целых чисел в памяти. Итак, что он может сделать, это [1] выделить копию первого целого числа, [2] скопировать второе целое число в память, где было первое целое число, и [3] скопировать первое целое обратно в память, где вторая целое. В коде:
void swap(int *a, int *b)
{
int temp = *a; // 1
*a = *b; // 2
*b = temp; // 3
}
У меня вопрос не возникает. Какие адреса вы хотите поменять местами? – sharptooth
Вы можете поменять значения веса и высоты, но не их адреса –