小编WJR*_*WJR的帖子

将未初始化的局部变量传递给函数时,C++编译器警告(?)

我对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;
}
Run Code Online (Sandbox Code Playgroud)

如果我将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;
}
Run Code Online (Sandbox Code Playgroud)

好的,另一个显示未初始化的全局变量在传递给函数作为值时起作用的示例:(脱离David的评论)

int foo; …
Run Code Online (Sandbox Code Playgroud)

c++ variables initialization local

0
推荐指数
1
解决办法
4348
查看次数

标签 统计

c++ ×1

initialization ×1

local ×1

variables ×1