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

C++ Visual Studio 2010 how to use a char type variable in different functions

本文关键字:函数 类型变量 char 2010 Studio C++Visual      更新时间:2023-10-16

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

#include ...
char path[100];
int main()
{
    char path[100] = "C:/......";
    [...]
    out = function();
}
int function()
{
    [...]
    imwrite(path,image);
    [...]
} 

问题是我的路径变量似乎以某种方式丢失了,因为如果我在 imwrite in 函数之前尝试 cout <<路径,它不会打印任何内容,就好像路径为空一样。

我应该怎么做才能在函数中访问我的路径变量?

您将在

main 函数的作用域以及全局作用域中定义path变量。

main()您有一个新的path声明:

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

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

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

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

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

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

顺便说一句,您可以通过引用指定全局命名空间的 ::path 来强制从 main 方法中访问全局范围的变量。但那是另一回事了。

您正在定义一个全局变量path(在全局范围内)和一个局部变量pathmain()中。这意味着在main()内部,path指的是局部的,而在function()中,它指的是全局的。

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

#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]