fghhslk 发表于 2012-6-9 10:38:42

代人求教C++问题

为什么结构体要定义在main外面,才能让vector之类的STL容器与结构体混用?例如vector<struct_name> s;刚刚试了一下,如果把结构体定义在main里面,就通不过编译。

sky 发表于 2012-6-9 11:19:35

定义在主函数之外的内置类型变量或者自定义类型变量是全局性质的,它们会在编译的时候在堆上分配内存空间,这样,在整个函数运行期间,它们都可以被访问。在主函数中定义的属于局部变量,局部变量的内存是在栈上分配的,它是在程序运行时才会被分配存储空间,所以在程序编译的时候,你是找不到栈空间上的这个自定义类型变量的,所以编译无法通过了。

czc30114 发表于 2012-6-9 11:26:42

想了一下,函数里面定义的变量不能拿到函数外部用吧,是这个意思么,求楼下高手

Castelo 发表于 2012-6-9 13:24:40

sky正解吧。

不同的编译器表达出来的动作甚至有时也有天壤之别。

别太在乎这些了。幸福的家庭都相似,不幸的家庭各有各的不幸。开局好就好。拙见。{:7_265:}

fghhslk 发表于 2012-6-9 17:06:43

sky 发表于 2012-6-9 11:19 static/image/common/back.gif
定义在主函数之外的内置类型变量或者自定义类型变量是全局性质的,它们会在编译的时候在堆上分配内存空间, ...

多谢解答{:6_194:}

wljyy521 发表于 2012-6-9 23:07:16

shy说的是变量在内存中的存储方式:lol正解

poiu9080 发表于 2012-6-10 15:30:14

其实是在讲变量的作用域

wjl 发表于 2012-6-14 13:10:25

编译的时候在堆上分配内存空间?堆上? really?

ES_soso 发表于 2012-6-19 16:03:07

受教{:5_124:}
页: [1]
查看完整版本: 代人求教C++问题