C++ C+中主函数前的字符串声明+;

C++ C+中主函数前的字符串声明+;,c++,syntax,C++,Syntax,我对理解stri和声明它们还不熟悉。可以输入字符串变量=”; 我不明白为什么你也可以在声明上加一个等号。这是不是像全局变量一样将函数声明为空?像int变量=0;这有点像一个全局字符串变量吗?一旦我更改了它,它将存储在主功能和其他功能中 #include<iostream> using namespace std; string variable = ""; int main() { return 0; } #包括 使用名称空间std; 字符串变量=”; int main(){

我对理解stri和声明它们还不熟悉。可以输入字符串变量=”; 我不明白为什么你也可以在声明上加一个等号。这是不是像全局变量一样将函数声明为空?像int变量=0;这有点像一个全局字符串变量吗?一旦我更改了它,它将存储在主功能和其他功能中

#include<iostream>
using namespace std;
string variable = "";
int main() {


return 0;
}
#包括
使用名称空间std;
字符串变量=”;
int main(){
返回0;
}

您发布的小示例有四个独立部分:

1) 包括必要的标题:

#include<iostream>
3) 这就是你可能要问的问题:

string variable = "";
上面的这一行完全独立于下面的函数。它正在声明一个名为
variable
global变量,类型为
string
。它还为它赋值,正好是空字符串,即
”。你也可以说:

string variable = "My name is numLOCK";
因此,您只是将该变量的值初始化为指定的文本,并将aome值分配给该变量

4) 接下来是
main
功能。这就是实际工作

int main() {
    return 0;
}
请注意,您可以在
main
或任何其他函数中使用上面声明的全局变量。您还可以在函数中声明更多变量。例如:

string someText = "My name is numLOCK";

int main() {

    int someNumber = 42;

    cout << someText << endl;
    cout << someNumber << endl;

    return 0;
}

可以通过两种方式为字符串变量赋值

string variable = ""; 
这意味着您声明了一个名为variable的字符串类型的变量,并为该变量分配了一个空字符串

也可以通过这种方式指定值

string variable("");
这与上面的意思完全相同。但这里你不需要等号


这里有一个参考可以帮助您理解字符串

您所询问的语句定义了 命名空间范围(在本例中为全局命名空间)。更多 或与任何定义不太相似:除了关于链接和 寿命:

生命周期是静态的,这意味着变量将 在输入
main
之前初始化(无论如何,在实践中), 并将在调用
exit
后销毁

链接是外部的,这意味着名称
变量
始终指同一实体,即使在不同的翻译中也是如此 单位

当然,由于作用域是命名空间作用域,所以变量 可以从该命名空间中的任何函数直接引用, 或嵌套在该命名空间中的任何命名空间中。既然 其他名称空间嵌套在全局名称空间中,这意味着 变量可以在任何地方引用(除非有
其他声明正在隐藏它)。

“为什么函数会以这种方式以字符串形式声明?”-wat?函数没有在字符串中声明…不清楚您想说什么/问什么。如果你英语不太好,我很抱歉,但是这些句子我听不懂。非常感谢你们。我不知道全局变量可以像这样用字符串操纵。字符串更有趣。全局变量可以是任何类型。不管它值多少,在
string variable=“”)中没有赋值@JamesKanze right。。严格地说,这是初始化,不是赋值。谢谢你的清晰想法。所以我想人们应该做的就是把它初始化为空。这很奇怪,因为我搜索了很多地方来找到这个简单的问题,你只能用一种方式分配给一个字符串。你的两个例子都没有赋值,只有初始化。@JamesKanze,哦,是的!非常感谢您的澄清。
string variable = ""; 
string variable("");