指针4(收尾加笔试题讲解)

本文详细讲解了sizeof和strlen的区别,以及它们在面试题中的运用,包括数组元素未完全初始化导致的陷阱。通过实例解析了四个指针相关题目,帮助读者掌握相关概念和技巧。
摘要由CSDN通过智能技术生成

今天我们主要来讲解一些关于指针的面试题,将之前我们要先来学习一下sizeof和strlen的相关知识

1.sizeof和strlen的对⽐

1.1sizeof

我们首先要知道,sizeof是一个单目操作符(即操作数只有一个),sizeof可以计算变量所占内存空间的大小(例如sizeof(a)),单位是字节;如果操作数类型的话,计算的是该类型所占内存空间的大小(例如sizeof(int))

而且,sizeof的返回值是size_t,是无符号类型,打印时应该使用%zd来打印。

1.2strlen

首先,strlen是一个库函数,使用时应该包含头文件string.h。

strlen函数原型如下:

size_t strlen ( const char * str );

用于计算字符串的长度,遇到‘\0’停止,如若字符串末尾没有'\0',则会越界查找,直至遇到'\0'停下。

我们来看下面一段代码:

输出结果如下图所示:

1.3 sizeof和strlen的对比

2.指针笔试题解析

题目一:

解析如下:

所以打印结果为2,5;

题目二:

那么这一题的结果是多少呢?

相信不少小伙伴会说:0!这不是很简单吗?

那答案是什么呢?运行代码我们发现结果为:1

为什么呢?我们来看下面的解释:

首先这道题的坑就是a数组内的六个元素是什么,是0,1,2,3,4,5吗?

通过调试发现a数组的元素是1,3,5,0,0,0;

我们要瞪大眼睛审题:

所以说这个数组是不完全初始化数组,只给前三个元素赋值,后面三个没赋值的默认为0;

 所以说结果是1;

题目三:

这道题目结果又是多少呢?

所以说结果为10,5;

题目四:

解析如下:

对pa解引用得到的是字符串"at"首元素地址,故打印结果是at

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值