指针运算相关面试题详解【C语言】

导读:本篇文章讲解 指针运算相关面试题详解【C语言】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

接着上一篇文章,咱们在理解了数组名的含义,以及指针的运算之后,下面咱们来关注一些经典的指针面试题。下面直接代码+图解。

第一题:

int main()
{
	int a[5] = { 1, 2, 3, 4, 5 };
	int* ptr = (int*)(&a + 1);

	printf("%d,%d", *(a + 1), *(ptr - 1));// 2  5
	return 0;
}

abdff37aaabf44439a01c55b5a6fca5e.png

 第二题:

假设p 的值为0x100000。 如下表表达式的值分别为多少?
已知,结构体Test类型的变量大小是20个字节

struct Test
{
	int Num;
	char* pcName;
	short sDate;
	char cha[2];
	short sBa[4];
}* p = (struct Test*)0x100000;

int main()
{
	printf("%p\n", p + 0x1);
	//0x100000+20-->0x100014

	printf("%p\n", (unsigned long)p + 0x1);
	//1,048,576+1 --> 1,048,577
	//0x100001
	
    printf("%p\n", (unsigned int*)p + 0x1);
	//0x100000+4-->0x100004

	return 0;
}

第三题:

int main()
{
	int a[4] = { 1, 2, 3, 4 };

	int* ptr1 = (int*)(&a + 1);

	int* ptr2 = (int*)((int)a + 1);

	printf("%x,%x", ptr1[-1], *ptr2);

	return 0;
}

7608ff21bd9c4f3e9c16d992ef54fb72.png

注意:这里需要清楚小端存储的概念,具体内容想看前面有一篇文章的内容,里面详细讲解了大小端存储。 

当要求十六进制打印时,结果为:

69762fe0ad7540048ea87edaedcd3872.png

 

第四题:

 

int main()
{
	int a[3][2] = { (0, 1), (2, 3), (4, 5) };
	int* p;
	p = a[0];
	printf("%d", p[0]);
	return 0;
}

注意:这里需要注意括号问题!还有就是逗号表达式的问题!!!

12d69d6f60e3440ab654b9fadd2f3a05.png

 第五题:

int main()
{
	int a[5][5];
	int(*p)[4];
	p = a;
	printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
	return 0;
}

注意:这里首先需要理解:p[4][2]  -> *(*(p+4)+2),而且这两个指针相减为中间的元素个数

0c384cb4c5a8433eb75fb08920af22e5.png

afc28d741d6d4658b02ee0f7afb6469c.png

 

第六题:

int main()
{
	char* c[] = { "ENTER","NEW","POINT","FIRST" };
	char** cp[] = { c + 3,c + 2,c + 1,c };
	char*** cpp = cp;

	printf("%s\n", **++cpp);// POINT
	printf("%s\n", *-- * ++cpp + 3); // ER
	printf("%s\n", *cpp[-2] + 3); // ST
	printf("%s\n", cpp[-1][-1] + 1); // EW

	return 0;
}

注意:这道题要注意– 、++ 操作会改变cpp的位置,如果这一点get到了,再结合图解,就很简单了

cb4c1d66b08e4abb8f07fe8dcea020d3.png

结语:写得很水,哈哈哈哈,但是大概意思就表达出来了,写在这里主要是方便自己以后的复习和学习。 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94504.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!