c面试题总结
1.
1 2 3 | char *pname= new char [10];<br>pname= "asdzxc" ; cout<<pname; delete pname; |
该程序运行时会崩溃,原因时我们自己在堆上new出了一块空间后,马上又让该指针指向了字符常量区,之前分配的空间就会丢掉,此时虽然可以正常输出,但是在delete的时候,由于找不到我们之前开辟的那块空间的位置又进行了释放内存的操作,自然会崩溃。
所以字符串的赋值一定不能用“=”,要用strcpy(),初始化可以用“=”,如:(在c++中用string类可直接赋值)
1 | char *p= "asdzxc" ; //是正确的 |
下面这种写法同理也是错误的。
1 2 | char pname[]= "asdzxc" ; //栈 pname= "aaa" ; |
2.c++中BOOL是int定义的,是4个字节,bool是char 的别名,是1个字节。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步