C语言指针面试习题详解

1.如下代码中,输出的内容是什么

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

&a中,a代表整个数组吗,&a + 1代表跳过一整个数组后的地址,因此ptr指向的是5后面的那个地址,ptr - 1指向的是a[4]的地址,解引用是5,a + 1代表的是a[1]的地址,解引用是2,最后的结果是2,5

2.在X86环境下,假设结构体的⼤⼩是20个字节,程序输出的结果是啥?

  struct Test5 {int Num; char* pcName;   short sDate;   char cha[2];  short sBa[4]; }*p = (struct Test*)0x100000;  int main() {printf("%p\n", p + 0x1); printf("%p\n", (unsigned long)p + 0x1); printf("%p\n", (unsigned int*)p + 0x1); return 0; }

这里创造了一个结构体,并创造了一个全局变量p,这里的p是一个指针

p+ 0x1就是+1,跳过了一整个结构体,也就是+20,不要忘记改变为十六进制

第二个将p转换为无符号长整型,整型值+1就是实际上+1

第三个是int型指针,在x86的环境下,跳过一个int指针就是+4

3.如下的代码中,输出的结果是什么

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

在二维数组a中,不要忘记逗号操作符,实际上,a存放的是{ {1,3}, {5,0}, {0,0} }

现在p指向了a[0]的地址,输出p[0],实际就是输出1

4.如下代码中输出的结果是什么

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个整型元素的

指针-指针 = 指针和指针之间的元素的个数

a -- 类型是int(*) [5]        p -- 类型是int (*) [4]

p[4][2] == *(*(p+4)+2)        

输出的结果是FFFFFFC,-4

5.如下代码输出的是什么?

#include <stdio.h>
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;
}

这里ptr1指向的是跳过aa后的地址,ptr2指向的是6的地址

现在我们就可以输出啦

6.如下代码输出的是什么?

#include <stdio.h>
int main()
{char *a[] = {"work","at","alibaba"};	//a是指针数组char**pa = a;   pa++;   printf("%s\n", *pa);	//at   return 0;
}

a是一个指针数组,pa指向的是a的第一个的地址

pa++后指向的是第二个的地址,最后输出at

7.如下代码输出的是什么?

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);  //ERprintf("%s\n", *cpp[-2] + 3);  //STprintf("%s\n", cpp[-1][-1] + 1);   //EWreturn 0; 
}

就在本道题目中,要记住解引用后是在自己的位置进行更改

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

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

相关文章

数字化解决方案的设计与实现:提升业务效率与用户体验

摘要&#xff1a;随着数字化时代的到来&#xff0c;越来越多的企业和组织开始寻求数字化解决方案来提升业务效率和改善用户体验。本文将探讨数字化解决方案的设计与实现过程&#xff0c;并介绍一些关键的技术和策略。 ## 引言 在当今竞争激烈的商业环境中&#xff0c;企业和组…

vue,pinia,state备忘

介绍 在大多数情况下&#xff0c;state 都是 store的核心&#xff0c;项目一般都是优先定义能代表他们APP的state,在pinia中&#xff0c;state 被定义为一个返回初始状态的函数&#xff0c;这使得Pinia可以同时支持服务端和客户端。 import { defineStore } from piniaconst …

安卓kotlin面试题 61-70

61. Kotlin中顶层函数、中缀函数、解构声明的实质原理?1、顶层函数 顶层文件会反编译成一个容器类。(类名一般默认就是顶层文件名+”Kt”后缀,注意容器类名可以自定义) 顶层函数会反编译成一个static静态函数,如代码中的formateFileSize和main函数 注意: 通过Kotlin中的@fil…

每日shell脚本之自动化备份数据库周期性灾备

每日shell脚本之自动化备份数据库周期性灾备 使用本脚本前在服务器安装 物理备份工具-xtrabackup #!/usr/bin/bash #CSDN :M乔木 #Email:2776617348qq.com #解释器:这是一个shell脚本 #数据库用户密码 user数据库用户 passwd数据库密码#检查备份情况 bm…

C++笔记之在成员函数中打印出对象名

C++笔记之在成员函数中打印出对象名 —— 杭州 2024-03-10 code review! MyClass.h #ifndef MYCLASS_H #define MYCLASS_H#include <string>// 类声明 class MyClass {private

Unity 轮转图, 惯性, 自动回正, 点击选择

简单的实现 2D 以及 3D 的轮转图, 类似于 Web 中无限循环的轮播图那样. 文中所有代码均已同步至 github.com/SlimeNull/UnityTests 3D 轮转图: Assets/Scripts/Scenes/CarouselTestScene/Carousel.cs2D 轮转图: Assets/Scripts/Scenes/CarouselTestScene/UICarousel.cs 主要逻…

华为OD机试真题-按身高和体重排序

华为OD机试真题-按身高和体重排序 题目描述&#xff1a; 某学校举行运动会&#xff0c;学生们按编号(1、2、3...n)进行标识&#xff0c;现需要按照身高由低到高排列&#xff0c;对身高相同的人&#xff0c;按体重由轻到重排列;对于身高体重都相同的人&#xff0c;维持原有的编…

HashMap的底层实现

1、1.7版本的底层实现 HashMap在1.7版本中数据结构是数组链表&#xff0c; 1.1 put方法 put方法中操作步骤&#xff1a; &#xff08;1&#xff09;、对key计算相应的hash值&#xff0c;然后通过hash & table.length-1计算可以获得到在hash表中中相应的桶位置&#xff…

海外媒体宣发套餐如何利用3种方式洞察市场-华媒舍

在当今数字化时代&#xff0c;媒体宣发成为了企业推广产品和品牌的重要手段之一。其中&#xff0c;7FT媒体宣发套餐是一种常用而有效的宣传方式。本文将介绍这种媒体宣发套餐&#xff0c;以及如何利用它来洞察市场。 一、关键概念 在深入讨论7FT媒体宣发套餐之前&#xff0c;让…

golang实现正向代理和反向代理

文章目录 正向代理反向代理区别与联系:总结代理服务器实现正向代理反向代理正向代理 正向代理是客户端代理,它位于客户端和目标服务器之间。它的作用是保护客户端的隐私和安全。 如我们现在想要访问谷歌,但是由于某些原因,无法直接访问到谷歌,我们可以通过连接一台代理服务…

STM32_3-1点亮LED灯与蜂鸣器发声

STM32之GPIO GPIO在输出模式时可以控制端口输出高低电平&#xff0c;用以驱动Led蜂鸣器等外设&#xff0c;以及模拟通信协议输出时序等。 输入模式时可以读取端口的高低电平或电压&#xff0c;用于读取按键输入&#xff0c;外接模块电平信号输入&#xff0c;ADC电压采集灯 GP…

【NERF】入门学习整理(二)

【NERF】入门学习整理(二) 1. Hierarchicalsampling分层采样2. Loss定义(其实就是简单的均方差MSE)3. 隐式重建与显示重建1. Hierarchicalsampling分层采样 粗网络coarse,均匀采样64个点 缺点:如果仅使用粗网络会存在点位浪费和欠采样的问题,比比如空气中很多无效的点 精细…

【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本篇为【C语言】文件操作篇-----程序文件和数据文件&#xff0c;文件的打开和关闭&#xff0c;二进制文件和文本文件【图文详解】&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言 在了解完动态内存管…

的发射点2

☞ 通用计算机启动过程 1️⃣一个基础固件&#xff1a;BIOS 一个基础固件&#xff1a;BIOS→基本IO系统&#xff0c;它提供以下功能&#xff1a; 上电后自检功能 Power-On Self-Test&#xff0c;即POST&#xff1a;上电后&#xff0c;识别硬件配置并对其进行自检&#xff0c…

5.55 BCC工具之funcinterval.py解读

一,工具简介 eBPF/bcc非常适用于平台性能调优。通过funclatency工具,我们可以分析特定函数的性能,了解该函数的延迟情况。然而,有时性能下降并不是由于函数的延迟,而是函数调用之间的间隔。 funcinterval正是为此而生。 另外,在平台上进行硬件性能调优时,我们将使用协…

运维随录实战(13)之docker搭建mysql集群(pxc)

了解 MySQL 集群之前,先看看单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构需要特殊设计。单节点数据库无法满足大并发时性能上的要求。单节点的数据库没有冗余设计,无法满足高可用。单节点 MySQL无法承载巨大的业务量,数据库负载巨大常见 MySQL 集群方案 Re…

少儿编程 蓝桥杯青少组科技素养题 信息素养真题及解析第25套

少儿编程 科技素养 信息素养真题第25套 1、旅行结束之后&#xff0c;回到家的小蓝决定将照片备份在云端的网盘上。备份照片主要占用的是小蓝家的( )带宽 A、下行 B、上行 C、文件 D、数据 答案&#xff1a;B 考点分析&#xff1a;主要考查网络相关知识&#xff0c;要将照…

php使用redis做游戏服务端缓存

游戏数据缓存&#xff1a;在游戏中&#xff0c;玩家的角色数据、游戏物品等信息通常需要频繁读取和更新。使用 Redis 可以将这些数据缓存起来&#xff0c;以提高数据的读取速度和减少数据库的负载。这种场景下&#xff0c;可以使用 Redis 的字符串&#xff08;String&#xff0…

DHCP中继实验(华为)

思科设备参考&#xff1a; 一&#xff0c;技术简介 DHCP中继&#xff0c;可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段&#xff0c;则客户机可以正确地获得动态分配的IP地址。如果不在同一个物理网段&#xff0c;…

uView guid 全局唯一标识符

唯一标识符 #guid(length 32, firstU true, radix 62) 该函数可以生产一个全局唯一、随机的guid&#xff0c;默认首字母为u&#xff0c;可以用于当做元素的id或者class名等需要唯一&#xff0c;随机字符串的地方&#xff0c;因为id或者class不能以数字开头。 length <…