Я очень новичок в C ++, поэтому я надеюсь, что кто-то пролил немного света. Я сталкивался с несколькими похожими темами, но мне просто нужно уточнить.
Таким образом, кажется допустимым передавать локальную строку, которая была объявлена, но не инициализирована в функцию. Но почему компилятор жалуется, когда вы пробуете его с помощью int или float ??
Будь то строка, число с плавающей запятой или int, на адрес памяти ссылаются, когда он объявлен, даже если это может быть "мусор"
#include <iostream>
using namespace std;
void load(int);
int main()
{
int salary;
load(salary);
return 0;
}
void load(int sal)
{
cout << "your salary: " << endl;
cin >> sal;
cout << sal << endl;
}
Если я объявлю int или float как глобальную переменную, она будет работать, как и ожидалось, без каких-либо предупреждений.
Так лучше ли объявлять переменные в глобальном пространстве (надеюсь, нет)?
Итак, если поместить это в глобальное значение, оно работает:
#include <iostream>
using namespace std;
int salary;
void load(int);
int main()
{
load(salary);
return 0;
}
void load(int sal)
{
cout << "your salary: " << endl;
cin >> sal;
cout << sal << endl;
}
хорошо, еще один пример, показывающий, что неинициализированная глобальная переменная работает при передаче функции в качестве значения: (исходя из комментария Дэвида)
int foo;
int returnit(int j)
{
cout << "your salary";
cin >> j;
return j;
}
int main()
{
int k = returnit(foo);
cout << k;
return 0;
}
в любом случае, урок здесь заключается в инициализации примитивных типов данных перед передачей в функции.