C语言经典指针笔试题详解

作者:小轩在不在哟 时间:2021-10-23 12:56:39 

题目一(有关传值调用与非法访问)

请问运行Test 函数会有什么样的结果?

C语言经典指针笔试题详解

答 :
程序运行会崩溃 ! 且存在内存泄漏 ;
原因:

  • 1.str传给p的时候,是值传递,p是str的临时拷贝,所以当malloc开辟的空间起始地址放在p中的时候,不会影响str,str依然为空指针NULL ;

  • 2.当str是NULL,strcpy想把 hello world 拷贝到str指向的空间时,程序就崩溃了。因为NULL指向的空间是不能直接访问的,造成了非法访问;

  • 3.malloc开辟的空间没有free释放也没有制空,程序不结束就会一直存在,造成了内存泄漏;

正确改正方式为:

C语言经典指针笔试题详解

题目二 (返回栈空间地址的问题 )

请问运行Test 函数会有什么样的结果?

C语言经典指针笔试题详解

此类问题是 : 返回栈空间地址的问题
答 :
程序运行打印的是随机值 ;
原因 :
GetMemory函数返回的p是数组名,也就是数组首元素h的地址 ;
但是 ! GetMemory函数创建是在栈空间上创建的,return后会销毁,空间还给操作系统,虽然下面Test函数中的str存了h的地址,但是如果进行打印,原来的空间已经被销毁,打印的内容自然不是想要的内容;(虽然有可能依然打印出 hello world ,那是因为空间暂时还没被覆盖使用,本质上依然是错误的)。

题目三 (区别传值调用的传址调用)

请问运行Test 函数会有什么样的结果?

C语言经典指针笔试题详解

答 :
虽然能成功打印出 hello world ,但是造成了内存泄漏 , 要记得 free 释放和制空 ;
原因 :
这里传的是str的地址,区别题目1的传值调用,这里是传址调用,形参的改变能影响实参;
malloc开辟的空间地址交给了str ,str指向了这块空间,所以strcpy能成功使用这块空间实现打印内容;
但是没有释放malloc动态开辟的这块空间,也没有制空,造成了内存泄漏 ;

题目四 (free释放的时机)

请问运行Test 函数会有什么样的结果?

C语言经典指针笔试题详解

这道题比较简单 ,解析给在了代码注释中 ,大家注意查看 。

🎇结尾:

有关这四道经典的指针笔试题讲解就到此结束了,如果觉得文章对自己有所帮助,欢迎大家多多点赞收藏✨ ~

来源:https://blog.csdn.net/xqs196301/article/details/120628107

标签:C语言,指针,笔试题
0
投稿

猜你喜欢

  • 详解Android的网络数据存储

    2022-08-22 01:39:39
  • C# 日历类功能的实例代码

    2023-06-23 21:44:45
  • C#获取两个时间的时间差并去除周末(取工作日)的方法

    2022-07-25 00:20:44
  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    2023-05-13 02:13:08
  • Android开发之SeekBar基本使用及各种美观样式示例

    2023-06-30 07:15:22
  • 详谈Java中的事件监听机制

    2022-08-05 00:29:30
  • Java 中的弱引用是什么

    2021-08-21 08:10:46
  • 详解DES加密算法的原理与Java实现

    2021-06-22 06:56:19
  • Android下拉刷新上拉加载控件(适用于所有View)

    2022-09-20 21:40:20
  • Java日常练习题,每天进步一点点(2)

    2023-08-17 22:46:19
  • Android调用系统摄像头拍照并显示在ImageView上

    2022-02-19 17:42:00
  • Spring Security Remember me使用及原理详解

    2023-10-28 04:59:56
  • Unity shader实现百叶窗特效

    2023-06-05 00:05:49
  • Android三方依赖冲突Gradle中exclude的使用

    2023-05-05 05:09:56
  • Java中Maven项目导出jar包配置的示例代码

    2023-01-26 20:09:32
  • Java十分钟精通异常处理机制

    2022-08-04 19:03:07
  • Java解析Excel内容的方法

    2023-03-20 20:36:26
  • 基于android中的各种颜色在drawable.xml中的值详解

    2022-03-30 01:56:18
  • 基于springboot 配置文件context-path的坑

    2021-07-04 17:37:27
  • java中为何重写equals时必须重写hashCode方法详解

    2022-10-24 01:44:39
  • asp之家 软件编程 m.aspxhome.com