今天我们主要来讲解一些关于指针的面试题,将之前我们要先来学习一下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;
题目三:![](https://i-blog.csdnimg.cn/blog_migrate/58e7eafac22d582933f076553c4a049a.png)
这道题目结果又是多少呢?
所以说结果为10,5;
题目四:
解析如下:
对pa解引用得到的是字符串"at"首元素地址,故打印结果是at