笔试题之指针结合数组的精讲2

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

👑💎💎👑💎💎👑 
💎💎💎自💎💎💎
💎💎💎信💎💎💎
👑💎💎 💎💎👑    希望在看完我的此篇博客后可以对你有帮助哟

👑👑💎💎💎👑👑   此外,希望各位大佬们在看完后,可以互赞互关一下,看到必回
👑👑👑💎👑👑👑   

 接下来可是满满的干货,咱也就是说,没点底子咱还真拿捏不了

 笔试题1

草图如下:

笔试题2

分析如下:

        int a[4] = { 1, 2, 3, 4 };//在VS环境下,采用小端存储,
        int* ptr1 = (int*)(&a + 1);// 分析同第6行代码分析
        int* ptr2 = (int*)((int)a + 1);//对于这个我们需要知道数据是如何在内存中存储的,注意a这里是首元素的地址,(int)a强转成int 类型数据(int)a+1此时向后移动一个字节
        printf("%x %x", ptr1[-1], *ptr2);// %x是以16进制打印,补充 :%d 是10进制打印  %o是以8进制
        return 0;

 

 

 &a+1 :跳过整个数组的地址,此时对应指针类型int *[5] 即数组指针,(int*)(&a + 1)表示强转成int*类型指针

ptr1[-1] 等价于 *(ptr - 1),访问的是元素4

  数组a在内存中的存储如下:

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

因为此时ptr2指针类型是int*,所以解引用访问4个字节,即 00 00 00 02 

又因为VS是小端存储

所以以16进制打印出来的是

20000000

笔试题3

            {

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

        //注意这里是圆括号而不是花括号,圆括号里面是逗号表达式
            int* p;
            p = a[0];    //指向第一行元素的位置
            printf("%d", p[0]);//  1    访问的是第一行第一个位置
        return 0;
    }

草图如下: 

 

笔试题4
int main()
{int a[5][5];//二维数组,a对应的类型  int(*)[5]int(*p)[4];//数组指针,指向数组元素个数为4p = a;printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);// p[4] = *(p+4) 跳过4个int(*)[4]的数组     a[4] = *(a+4):跳过4个int (*)[5]的数组return 0;return 0;
}

分析如下:

 

首先我们要知道几个点:

二维数组我们可以把他看成一维数组的数组

对于指针加整数,跳过几个元素,取决于指针类型,以及是指向数组还是指向元素

对于数组a而言,对应类型int(*)[5] 

a+1  跳过1个类型为int(*)[5]的数组

 对于p而言,对应类型int(*)[4] 

p+1   跳过1个类型为int(*)[4]的数组

指针相减(大减小)得到的是元素个数

笔试题5

int main()
{int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int* ptr1 = (int*)(&aa + 1);  // &aa+1跳过整个数组int* ptr2 = (int*)(*(aa + 1));// aa类型int(*)[5] 此时跳过一维数组printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));//  10   5  return 0;
}

 分析如下:

 

笔试题6
    char* a[] = { "work","at","alibaba" };// 这是一个字符指针数组,数组内容是字符串,字符串传递的是第一个字符的地址char** pa = a;//数组名表示数组首元素地址,pa此时指向第一个字符串的起始位置pa++;//因为pa所对应的指针类型是char**,此时pa++跳过一个元素,即指向第二个字符串的起始位置printf("%s\n", *pa);//  at   %s是以字符串的形式打印所以遇到\0即结束打印

解析如下:

首先我们要知道以下几点:

1)这是一个字符指针数组,它的每一个元素是字符串

2)数组名的含义(包括2种特殊情况)

3)指针加整数跳过几个元素

   char** pa = a;

  //数组名表示数组首元素地址,pa此时指向第一个字符串的起始位置
    pa++;

   //因为pa所对应的指针类型是char**,此时pa++跳过一个元素,即指向第二个字符串的起始位置

 要是感觉还不错的话,麻烦各位大佬们给个关注,点个赞呗,您的支持是我不断前进的动力,都看到这里了,想必和我一样对编程世界怀着同样的期待~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207012.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高级网络程序设计】Week3-2 Servlet

一、 What are servlets? 1. 定义 (1)Servlets are Java’s answer to CGI: programs that run on a web server acting as middle layer between HTTP request and databases or other applications.Used for client requests that cann…

羊大师提示,羊奶都有哪些惊人功效?

羊奶不仅是一种美味的健康饮品,在近年来备受瞩目的的健康圈子里,羊奶还被赋予了更多的功效,成为一种备受推崇的保健品。羊奶不但富含营养,而且还有着非常多的益处,它能够用来美容、保健,甚至还可以治疗某些…

网络异常检测

随着社交网络、视频流、点对点技术、云计算和 SaaS 的出现,可以肯定地说,现代企业的好坏取决于他们的网络,尤其是在它们提供的带宽和安全性方面。无论是银行保护其数据免遭盗窃,还是商业组织保护其网络免受安全威胁和攻击&#xf…

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

文章目录 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数 130.1 背景信息 openGauss提供了多种修改GUC参数的方法,用户可…

Unity中Shader双向反射分布函数BRDF

文章目录 前言一、渲染方程二、什么是BxDF1、BSSRDF2、BRDF3、BTDF4、BSDF 三、迪士尼原则的BRDF四、迪士尼原则的BRDF的参数五、在Unity中看一下默认Shader的这些参数六、在这里记录一下使用 Blender 和 SubstancePainter 的流程1、在Blender中导出模型为 .obj 格式2、在Subst…

企业数字化建设诊断报告

市场竞争越来越激烈 不管是初创企业,还是面临转型的发展型企业 亦或是稳定发展突破瓶颈的传统企业 或多或少都面临着企业数字化建设的问题...... 联系亿达四方限时免费领取, “企业数字化建设诊断报告”。

Connect-The-Dots_2

Connect-The-Dots_2 一、主机发现和端口扫描 主机发现,靶机地址192.168.80.148 arp-scan -l端口扫描 nmap -A -p- -sV 192.168.80.148开放端口 21/tcp open ftp vsftpd 2.0.8 or later 80/tcp open http Apache httpd 2.4.38 ((Debian)) 111/tcp …

vxe编辑保存表格

业务需求: 1、需要点击编辑时,全部表格显示编辑框,点击保存,全部保存。 2、因为位置问题,产品经理把24小时分成了两行,开发就得分两个表格。列标题是写死的,文字偏移也是写死的,其他…

Raspberry Pi 5 新一代单板计算机:树莓派5代 (介绍、入门、解疑)

树莓派5代正式发布后,硬件和性能的全面升级让众多开发者们都想入手感受一波,外观上Raspberry Pi 5 与前代产品非常相似,不过,在保留信用卡大小的整体尺寸的同时,也更新了一些设计元素,以适应新芯片组的功能…

跨境电商客服系统:提升客户满意度与优化电商体验的关键

随着全球电子商务的快速发展,跨境电商已经成为新的商业发展趋势。在这个高度竞争的市场环境中,优质的客户服务成为区分优秀与平庸的关键因素。一个高效的跨境电商客服系统不仅可以提高客户满意度,还能帮助企业优化电商体验,进而提…

Stable Diffusion XL网络结构-超详细原创

强烈推荐先看本人的这篇 Stable Diffusion1.5网络结构-超详细原创-CSDN博客 1 Unet 1.1 详细整体结构 1.2 缩小版整体结构 以生成图像1024x1024为例,与SD1.5的3个CrossAttnDownBlock2D和CrossAttnUpBlock2D相比,SDXL只有2个,但SDXL的Cros…