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

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语言 面试 机试题,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语言面试会问10个数排序吗,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. GridView总结二:GridView自带编辑删除更新
  2. linux 命令篇 -- 新建用户
  3. 智能合约从入门到精通:调用数据的布局和ABI
  4. 第十六章、Raid及mdadm命令
  5. Shell命令-文件及目录操作之chattr、lsattr
  6. git submoule 更新_微软Surface Duo双屏手机键盘更新:支持分体式输入
  7. JQuery弹出层,点击按钮后弹出遮罩层,有关闭按钮
  8. ViewGroup的测量及绘制
  9. R语言学习 - 非参数法生存分析
  10. Bug(二)——error LNK1104:无法打开“opengl32.lib”
  11. linux第三版 网页链接
  12. 抢红包算法 c语言,微信红包的随机算法是怎样实现的?
  13. VS+Qt应用开发-设置鼠标光标
  14. js 判断是不是数组
  15. Cropper详细笔记
  16. 2022-2028年中国饮用水市场投资分析及前景预测报告(全卷)
  17. hdu6070 Dirt Ratio
  18. 有趣的Windows桌面图标
  19. 数值分析:复化梯形公式与复化Simpson公式
  20. Supermap Iserver 安装指南

热门文章

  1. 古风排版(不使用二维数组)
  2. C#已知两点(线段),求互相垂直平分两点(线段)。
  3. VB6.0操作Excel
  4. SketchUp导出有纹理贴图的模型进入Unity3d的设置
  5. 全国大学生信息安全竞赛writeup--拯救地球(reverse500)
  6. java实现快速排序,冒泡排序,插入排序,选择排序,堆排序等经典排序
  7. 小波变换、傅里叶变换
  8. mybatis-mysql中大于号以及小于号
  9. mysql on ssd 优化
  10. 使用SketchUp制作椭圆形球体的方法(图文教程)