C++Visual Studio 2010如何在不同的函数中使用char类型变量
C++ Visual Studio 2010 how to use a char type variable in different functions
我的程序中有一个关于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
(在全局范围内)和一个局部变量path
在main()
中。这意味着在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]
。
相关文章:
- 从类型std::函数传递变量失败,尽管调用方期望的类型完全相同
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 根据模板函数类型推断变量的类型
- 哪个函数返回 cuda/nvml 库中"nvmlDevice_t"类型变量?
- 如何创建一个未知数变量和未知类型变量的构造函数
- C++Visual Studio 2010如何在不同的函数中使用char类型变量
- 在变差函数的不同参数包中推导两个不同的已知类型变量
- 在C++14中,可以将类型到值元函数用作变量别名
- C++11变量函数类型模板参数
- 为什么函数允许变量名和数据类型名,但关键字不允许
- 返回函数类型以外的其他类型变量
- 将匿名函数(lambda)保存为函数类型变量
- 如何在传递右值引用函数参数时从基元类型变量复制
- 为类型、函数和变量使用什么占位符名称(foobar)
- c++从函数类型创建变量
- 在另一个类中实例化具有相同构造函数的一组类中的类类型变量
- 找出函数中变量分配类型的方法
- 获取定义为(指针指向)函数类型的变量的必备(指针指向)函数类型