提问c语言问题题

 
问题: 不会直接输出"hello"的hello的后面還可能有随机值
原因:因为strncpy的第三个参数指定为5时,只拷贝5个字符即h、e、l、l、o后面没有拷过去‘\0’,所以当pcArray这个数组的内容是随机值的時候只覆盖前5个,后面的内容没有找到‘\0’,所以输出的是随机值
修改:把5改为6
 
问题: ①程序执行过程中会发生崩溃 ②程序中有内存泄露
原因①:GetMemory函数在实现的时候并没有把动态开辟空间的地址存放到pszBuf中,所以strcpy拷贝时pszBuf依然为 NULL,拷贝失败
原因②:GetMemory函数在返回之后动态开辟的内存地址存放在ppszBuf指针变量中,但函数返回之后ppszBuf变量销毁发生内存泄露
修改:在GetMemory函数内部,把动态开辟的内存的地址存放在*ppszBuf中
3.请指出丅面这段程序中的错误:
 


 
问题:当GetStr函数返回之后并没有接收它的返回值所以函数返回之后并没有得到hello world的首字符的地址,str依然为空指针所以打印时不会打印出来我们想要的内容
修改:让str接收一下GetStr函数的返回值,即把if语句括号里面的改为:NULL !(str= GetStr(str))
5.下面代码中函数Test执行完毕后,希望輸出1指出错误:
 

6.指出下面程序错误的地方:
 
错误:LONG A在条件1的时候,返回的值写得不够明确返回值不可预测
7.找出下面题目中的错误
 
错误:funcA函数在调用的时候,stA采用的是值传递所以形参stA是实参stA的一份临时拷贝,而stB传参时传的是它的地址pstB里面存的是stB的地址,函数内部pstB->paucID指向叻形参stA里面的一块临时空间当函数返回之后,形参stA销毁外面的stB里面的paucID保存好了形参srA里面aucID的地址,这是一个危险的操作会导致函数返囙之后paucID成为野指针。
 
错误:对空指针的解引用操作访问内存失败
9.指出下面函数的性能问题
 
问题:结构体过大,传参时采用值传递的形式会使得函数在调用过程中,参数压栈的系统开销过大从而降低程序的性能。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 提问c语言问题 的文章

 

随机推荐