该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

6、free()函数

问:下面的程序会在用户输入’freeze’的时候出问题,而’zebra’则不会,为什么?

#include int main(int argc, char *argv[]) {

char *ptr = (char*)malloc(10);

if(NULL == ptr)

{

printf("\n Malloc failed \n");

return -1;

}

else if(argc == 1)

{

printf("\n Usage \n");

}

else

{

memset(ptr, 0, 10);

strncpy(ptr, argv[1], 9);

while(*ptr != 'z')

{

if(*ptr == '')

break;

else

ptr++;

}

if(*ptr == 'z')

{

printf("\n String contains 'z'\n");

// Do some more processing }

free(ptr);

}

return 0; }

答:这里的问题在于,代码会(通过增加“ptr”)修改while循环里“ptr”存储的地址。当输入“zebra”时,while循环会在执行前被终止,因此传给free()的变量就是传给malloc()的地址。但在“freeze”时,“ptr”存储的地址会在while循环里被修改,因此导致传给free()的地址出错,也就导致了seg-fault或者崩溃。

7、*和++操作

问:下面的操作会输出什么?为什么?

#include int main(void) {

char *ptr = "Linux";

printf("\n [%c] \n",*ptr++);

printf("\n [%c] \n",*ptr);

return 0; }

答:输出结果应该是这样:

[L] [i]

因为“++”和“*”的优先权一样,所以“*ptr++”相当于“*(ptr++)”。即应该先执行ptr++,然后才是*ptr,所以操作结果是“L”。第二个结果是“i”。

c语言面试会问10个数排序吗,c语言面试最必考的十道试题,求职必看!!!相关推荐

  1. 面试c语言考题,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  2. c语言malloc面试题,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  3. 公司c语言面试题目,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  4. c语言考试常考试卷,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  5. c语言必考面试题,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  6. 应聘c语言面试试题,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  7. c语言基础知识 面试,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  8. c语言的复试笔试题目,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

  9. c语言 面试 机试题,c语言面试最必考的十道试题,求职必看!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 6.free()函数 问:下面的程序会在用户输入'freeze'的时候出问题,而'zebra'则不会,为什么? #include int main(int ...

最新文章

  1. NeurIPS 2019 获奖论文出炉,微软华人学者Lin Xiao 获经典论文奖
  2. 企业架构研究总结(2)——问题的由来和基本概念
  3. 2.2.5 操作系统之调度算法(时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法)
  4. Android权限之动态权限
  5. CTR学习笔记代码实现1-深度学习的前奏LR-FFM
  6. 将PHP对象转换为关联数组
  7. 使用Json.Net处理json序列化和反序列化接口或继承类
  8. MySQL 开启二进制日志记录
  9. 【图像隐写】基于matlab DCT图像隐写【含Matlab源码 365期】
  10. 天正双击墙体不能编辑_天正CAD绘图必须要知道的技巧
  11. 注册控件失败之一:提示0x80040200错误的处理办法
  12. 打造企业云三级火箭,EasyStack未来五年计划凸显雄心壮志
  13. [Spring] 注入Bean属性
  14. IT行业中说话最不靠谱的商业领袖
  15. 毕业生必须知道:干部身份、三方协议、派遣证、人事代理、户口迁移 、编制、工龄、签约、档案 1
  16. 为什么重写equals()就要重写hashCode()
  17. 红帽企业Linux生命周期
  18. leakage漏电流:基于COMS管工作原理的漏电流分析
  19. 一键抠图工具,一键实现专业抠图,适合小白
  20. 04.极简主义——热情(笔记)

热门文章

  1. lisp 多段线转面域_Objectarx 相交矩形求并集 面域转多段线
  2. VR--VIVE-SteamVR API
  3. hdu5751 Eades
  4. android升级adt和sdk之后无法识别SDK Location的一个解决方式
  5. Validator验证Ajax提交表单的方法
  6. 计算机网络技术之城域网与三网融合技术
  7. Python使用matplotlib设置pandas绘制的饼状图扇形标签
  8. 学会提问,你就成功了一大半!
  9. 详解Python 3.6.x程序打包并发布至pypi的完整过程
  10. android中的多渠道打包,Android 多渠道打包简析