8道经典之经典的指针题详解来了哦,包教包会

这篇具有很好参考价值的文章主要介绍了8道经典之经典的指针题详解来了哦,包教包会。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.试题解析

二.思路讲解分析

今天阿博给大家找来了几道指针笔试题,友友们要跟上阿博的思维,让我们去探索指针的奥秘吧🥷🥷
int  main()
{
	int a[5] = { 1,2,3,4,5 };
	int* ptr =(int*) (&a + 1);
	printf("%d %d", *(a + 1), *(ptr - 1));
	return  0;
}

8道经典之经典的指针题详解来了哦,包教包会

这里a和&连用,所以说取出的是整个数组的地址,再加1,跳过了整个数组,它的类型就是一个指针数组类型,和int*ptr不匹配,所以这里我们来了一个强制转换,这时候ptr就是一个整形指针,友友们这里一定要想明白哦,我们开始解题,(a+1)解引用,这里a没有和&连用,所以它代表的就是首元素的地址,就是1的地址,再加1,跳过一个整形,,所以就是2的地址,解引用,就是数字2,ptr刚才被我们强制转换成一个整形指针,所以减1,就是跳过一个整形,来到了这个位置.8道经典之经典的指针题详解来了哦,包教包会

答案就是2 , 58道经典之经典的指针题详解来了哦,包教包会
2.

struct Test
{
	int Num;
	char* pcName;
	short sDate;
	char cha[2];
	short sBa[4];
}*p;                         //这里结构体大小是20个字节
 //假设p的值是0x100000,结构体Test类型的变量大小是20个字节.
int main()
{
    p=(struct Test*)0x100000;
	printf("%p\n", p + 0x1);
	printf("%p\n", (unsigned long)p + 0x1);
	printf("%p\n", (unsigned int *)p + 0x1);
	return  0;

8道经典之经典的指针题详解来了哦,包教包会

友友们遇见这种题的时候要学会类比,我们可以把结构体和整形作比较,一个加1跳过4个字节,一个是20字节,只要我们搞懂这些,这些题就迎刃而解啦.😊😊😊
8道经典之经典的指针题详解来了哦,包教包会
注意这里它要打印够8位,不够前面自动补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;
}

8道经典之经典的指针题详解来了哦,包教包会
8道经典之经典的指针题详解来了哦,包教包会
4.

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

8道经典之经典的指针题详解来了哦,包教包会

这里我们也可以调试来看一下8道经典之经典的指针题详解来了哦,包教包会
所以结果为1.8道经典之经典的指针题详解来了哦,包教包会

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;
}

8道经典之经典的指针题详解来了哦,包教包会
注意!!!因为每个元素在内存中是以补码存放的,所以打印地址的时候打印的是补码.8道经典之经典的指针题详解来了哦,包教包会
6.

int  main()
{
	int aa[2][5] = { 1,2,3,4,5,6,7,8,9,10 };
	int* ptr1 = (int*)(&aa + 1);
	int* ptr2 = (int*)(*(aa + 1));
	printf("%d %d", *(ptr1 - 1) ,*(ptr2 - 1));
	return  0;
}

8道经典之经典的指针题详解来了哦,包教包会
8道经典之经典的指针题详解来了哦,包教包会
7.

int main()
{
	char* a[] = { "work","at","alibaba" };
	char** pa = a;
	pa++;
	printf("%s\n", *pa);
	return  0;
}

8道经典之经典的指针题详解来了哦,包教包会
8道经典之经典的指针题详解来了哦,包教包会
8.最后一题闪亮登场!🦹‍♀️🦹‍♀️🦹‍♀️

int main()
{
	char* c[] = { "ENTER","NEW","POINT","FIRST" };
	char** cp[] = { c + 3,c + 2,c + 1,c };
	char*** cpp = cp;
	printf("%s\n", **++cpp);
	printf("%s\n", *-- * ++cpp+3);
	printf("%s\n", *cpp[-2]+3);
	printf("%s\n", cpp[-1][-1]+1);
	return  0;
}

8道经典之经典的指针题详解来了哦,包教包会
8道经典之经典的指针题详解来了哦,包教包会文章来源地址https://www.toymoban.com/news/detail-404615.html

好了,今天的内容就到此结束了,如果友友们感觉有帮助的话,可以给阿博点个关注哦,后续继续给大家分享干货,让我们下期再见.💝💝💝

到了这里,关于8道经典之经典的指针题详解来了哦,包教包会的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用JMeter测试https请求?800字教程包教包会!

    HTTP与HTTPS略有不同,所以第一次使用JMeter测试https请求时遇到了问题,百度一番后找到解决方法:加载证书。 下面内容主要记录这次操作,便于后续参考: 操作浏览器 :谷歌 (1)下载被测网站证书,点击安全锁,选择安全证书   (2)查看证书的详细信息,显示所有后点击

    2024年02月05日
    浏览(44)
  • Big Data Tools插件(详细讲解安装,连接,包教包会!!!)

    🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈 😎《大数据专栏》大数据从0到秃头👽,从分析到决策,无所不能❕ 🔥 《python面向对象(人狗大战)》突破百万的阅读量,上过各种各样

    2024年02月03日
    浏览(33)
  • Ubuntu开机自启动脚本+设置(手把手教程,包教包会)

    一、写一个脚本 在 Documents 文件夹(随意放在你习惯的位置)中建立一个init.sh脚本,写上开机后需要执行的动作 init.sh内容为(这是我开机后需要执行的动作,比如进到我的gopath文件夹中执行main文件,学习go语言的懂得都懂。如果是python文件,可以写成python test.py ,反正当作

    2024年02月04日
    浏览(35)
  • 安卓模拟器安装burp证书&夜神&雷电思路通用。包教包会

    提醒:电脑该浏览器设备已安装burp证书。雷电3.102版本举例。 burp下载的证书格式为 der ,所以安装后再导出 ber 。火狐浏览器举例。安装好后,wifi代理指向burp即可。 思路要点: 从浏览器导出burp证书(后缀为cer)—— 拖入模拟器——移动到手机私有位置——设置—— 安全——

    2024年02月11日
    浏览(79)
  • 新手小白必看——基于STM32+ESP8266模块连接阿里云平台读取传感器数据(从0到1,包教包会)

    目录 前言             本次我们学习一下STM32F103驱动ESP8266去连接阿里云的实操过程,在次过程中我会详细讲解开发过程中遇到的问题以及面对问题的解决,希望大家在这篇博客里面也有所收获。 一、ESP8266WIFI模块的固件库刷新(MQTT) 1.固件库刷新 1.1 固件库烧录下载 1.2 固

    2024年04月26日
    浏览(33)
  • 【双指针】经典数组双指针题LeetCode

    27. 移除元素 简单 题目链接 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间, 你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的

    2024年02月12日
    浏览(31)
  • 【双指针】滑动窗口经典例题 力扣

    无重复的最长子串LC3 中等 题目链接 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 代码: 找到字符串中所有子母异位词LC438 中等 题目链接 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序

    2024年02月07日
    浏览(38)
  • 【面试经典150 | 双指针】验证回文串

    本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下: Tag:介绍本题牵涉到的知识点、数据结构; 题目来源:贴上题目的链接,方

    2024年02月09日
    浏览(31)
  • 【面试经典150 | 双指针】两数之和

    本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删: Tag:介绍本题牵涉到的知识点、数据结构; 题目来源:

    2024年02月09日
    浏览(29)
  • 有关C语言指针的经典例题

     1.通过地址运算符获得地址值   2.输入a,b,按从小到大的顺序输出 3 3.用指针法访问数组元素  4.从键盘输入10个整数,放入一堆数组a中,然后将该数组中的元素值依次输出  5.将10个数的最小值换到最前面的位置 6.求二维数组元素的最大值  7.用指针法实现字符串的复制 8

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包