Мы можем использовать метод parseInt(String str)
класса оболочки Integer
для преобразования значения String в целочисленное значение.
Например:
String strValue = "12345";
Integer intValue = Integer.parseInt(strVal);
Integer
также предоставляет метод valueOf(String str)
:
String strValue = "12345";
Integer intValue = Integer.valueOf(strValue);
Мы можем также использовать toInt(String strValue)
из класса Utility Utility для преобразования:
String strValue = "12345";
Integer intValue = NumberUtils.toInt(strValue);
Использовать новый оператор
int * count()
{
int myInt = 5;
int * p = new int;
*p = myInt;
return p;
}
Как указано в других ответах, это, как правило, плохая идея. Если вы должны сделать это так, то, возможно, вы можете использовать умный указатель. См. Этот вопрос, как это сделать. Что такое умный указатель, и когда следует использовать его?
Если вы хотите правильно вернуть указатель переменной, вам нужно что-то сделать.
int * myInt = new int(5);
Это не локальная переменная BTW, то есть у нее нет автоматического хранилища, и вы должны delete
сами запомнить
с использованием указателей, подобных этому, как правило, не нужно и не рекомендуется. Лучше создать int вне функции и заставить функцию взять ссылку.
void count(int & i)
{
i = 5;
}
BTW Я не знаю, как вы планируете использовать эту переменную, но так как вы также предложили использовать глобальную переменную вы можете использовать static
var, который предложил @JonathanPotter. Во многом статическая переменная похожа на глобальную переменную (оба имеют статические временные хранения)
Ошибка возврата указателя на локальную переменную. x указывает на переменную, выделенную в куче:
link x = new node(a[m]);
Thus x isn't pointing to a local variable.
Причина, по которой возвращать указатель на локальную переменную, является ошибкой в том, что такая переменная существует только до тех пор, пока функция активна (т. е. между ним вводится и завершается). Переменные, выделенные в куче (например, с использованием нового оператора), существуют до тех пор, пока они не будут освобождены (например, с оператором удаления).
Вы можете использовать интеллектуальные указатели.
Например:
unique_ptr<int> count()
{
unique_ptr<int> value(new int(5));
return value;
}
Затем вы можете получить доступ к целому следующему:
cout << "Value is " << *count() << endl;
Вы можете сделать это, сделав переменную static
:
int* count()
{
static int myInt = 5;
return &myInt;
}