В Java, когда оператор «==» используется для сравнения двух объектов, он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.
Класс Java String фактически переопределяет реализацию equals () по умолчанию в классе Object и переопределяет этот метод, чтобы он проверял только значения строк, а не их местоположения в памяти. Это означает, что если вы вызываете метод equals () для сравнения двух объектов String, то, пока действительная последовательность символов равна, оба объекта считаются равными.
Оператор
==
проверяет, являются ли две строки точно одним и тем же объектом.Метод
blockquote>.equals()
проверяет, имеют ли две строки одно и то же значение.
Нет, но вы можете вернуть пару
или boost :: tuple
, которые могут содержать несколько значений.
Кроме того, вы можете использовать ссылки для возврата нескольких значений, например:
void MyFunction(int a, int b, int& sum, int& difference);
Вы бы вызывали эту функцию так:
int result_sum;
int result_difference;
MyFunction(1, 2, result_sum, result_difference);
Как указывает Хоган, технически это не , возвращающее несколько переменных , однако это хорошая замена.
Да - ваша функция должна возвращать структуру. Или верните значения через ссылочные параметры.
struct A {
int x, y;
A(int x, int y) : x(x), y(y) {}
};
A myfun() {
return A(0, 42); // return two values
}
или:
void myfun(int & a, int & b) {
a = 0;
b = 42;
}
Функция может возвращать значения указанными способами:
Если вам нужно автономное возвращаемое значение, вы обычно должны заключить нужные типы в структуру и вернуть объект этой структуры по значению. Если вы хотите избежать сохранения локальной копии, вы должны передать параметр ссылки для изменения.
В усилении : : tuple
, есть функция tie
, которая упрощает процесс получения информации из возвращенного кортежа
. Если у вас есть функция, возвращающая кортеж
из двух double
s, и вы хотите загрузить их в две локальные переменные x
и y
, вы можете присвоить возвращаемое значение вашей функции boost :: tie (x, y)
.
Пример:
#include <math.h>
#include <iostream>
#include <boost/tuple/tuple.hpp>
const double PI = 3.14159265;
boost::tuple<double, double> polar_to_rectangular(double radius, double angle)
{
return boost::make_tuple(radius * cos(angle), radius * sin(angle));
}
int main()
{
double x;
double y;
boost::tie(x, y) = polar_to_rectangular(4, (45 * PI) / 180);
std::cout << "x == " << x << ", y == " << y << std::endl;
return 0;
}
main()
{
int a=10,b=20;
int *c;
c=aa(a,b);
printf("%d %d",*c,*c+1);
}
void aa(int a,int b)
{
int c1[2];
c1[0]=b+a;
c1[1]=a-b;
return(c1);
}
здесь будет возвращен адрес c1. поэтому он будет храниться в основном c cariable. мы можем получить обе переменные через указатель,
использовать структуру и возвращать несколько значений с разными типами данных.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
int a;
int b;
}Mystruct;
Mystruct myfun();
int main()
{
char name[30];
Mystruct ms2;
ms2 = myfun();
printf("val1: %d val2: %d",ms2.a,ms2.b);
return 0;
}
Mystruct myfun()
{
int a,b;
Mystruct ms;
a = 10;
b = 20;
ms.a=a;
ms.b=b;
return(ms);
}