C ++ Visual Studio 2010如何在不同的函数中使用char类型变量

时间:2012-12-04 13:32:37

标签: c++ visual-studio-2010 char

我的程序中有关于char类型变量的问题。 我没有发布代码,因为它太长了,但这大致是我想做的事情:

#include ...

char path[100];

int main()
{
    char path[100] = "C:/......";

    [...]

    out = function();
}

int function()
{
    [...]
    imwrite(path,image);
    [...]

} 

问题是我的路径变量似乎以某种方式丢失,因为如果我尝试cout< <在函数imwrite之前的路径,doesen打印任何东西就像路径是空的一样。

我应该怎样做才能在功能中访问我的路径变量?

2 个答案:

答案 0 :(得分:1)

您正在主函数范围内以及全局范围内定义path变量。

main()中,您有path的新声明:

char path[100] = "...";

这有效地为您提供了两个具有相同名称但在不同范围内的变量。如果您从path方法中访问main,它将访问本地范围的变量。

如果您希望以这种方式保留它,并删除全局范围的path变量,则可以将您的函数重新声明为:

int function(char* p_path)
{
    imwrite(p_path, image);
}

并将值作为参数传递给main:

char path[100] = "...";
...
function(path);

另外,您可以通过引用::path来强制从main方法中访问全局范围的变量,{{1}}指定全局命名空间。但这是另一个故事。

答案 1 :(得分:0)

您正在path中定义全局变量path(在全局范围内)和局部变量main()。这意味着在main()内,path指的是本地的,function()指的是全局的。{/ p>

如果路径是硬编码的(如您给出的示例中所示),则可以执行以下操作:

#include ...

char path[100] = "C:/......";

int main()
{
    [...]

    out = function();
}

如果需要计算路径,请改为:

#include ...

char path[100];

int main()
{
    [...]
    std::copy(computedPathValue, computedPathValue + computedPathLength + 1, path);

    out = function();
}

当然,最好是std::string path而不是char[100]