c++ 求助

[复制链接]
查看11 | 回复0 | 2009-10-11 21:33:17 | 显示全部楼层 |阅读模式
1、test中的"zhuguowansui"是常量不在栈中。char* str = "zhuguowansui";的意思是将"zhuguowansui"这个字符串的首地址赋值给str,或者说让str指向"zhuguowansui"这个字符串。return str;的意思是返回str变量的值,str是个指针,内容是"zhuguowansui"这个常量的地址。也就是说返回的是"zhuguowansui"的地址。因为常量存储在常量池中,不会因为函数返回而释放,所以返回其地址是有效的。test2中的char str[]在栈中声明了一个数组,并用"hahahah"初始化它char str[] = "hahahah";的执行结果是:在栈上开辟8个连续的字节,内容分别是'h','a','h','a','h','a','h',0。str则可以看做指向这8个字节的首字节的指针。即,其内容是第一个'h'的地址。由于这8个字节在栈上,函数返回时即无效化。所以返回这里str是没有意义的。2、Bruce* pBruce;声明一个Bruce类型的指针。注意!它只是一个指针。这个指针是全局变量,放在全局变量区。但是new出来的实例是在堆上的。也就是说,pBruce这个全局变量中存放的只是new出来的实例的地址而已。而这个实例存储在堆上,所以需要你delete。3+4、用VS的调试功能debug菜单或者工具栏上面都有控制命令另外还有快捷键...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行