【C语言进阶】指针经典笔试题

news2024/7/4 6:29:26

作者:@匿名者Unit
在这里插入图片描述

目录

  • 指针笔试题
    • eg1.
      • eg2.
        • eg3.
          • eg4.

指针笔试题

eg1.

我们先来看第一题:

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

我们先来分析ptr1,首先 &a 是取出了整个数组的地址接着+1越界到元素4后面的元素个数为4的数组 类型为int(*)[4],所以 ptr[-1] 是元素4 .
在这里插入图片描述

ptr2的分析较难些:首先a是数组首元素的地址,将地址强制转换为整形,我们假设a首元素的地址是0x0000ff40整形加一就变成了0x0000ff41,说明ptr2所存储的地址向前走了一字节,那它代表多大的数呢。在我的电脑上VS2019-x86是小端存储方式,我们将数组在内存中的存储画出来。
在这里插入图片描述
结果如下:
在这里插入图片描述

eg2.

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

这题有个大坑,一个不注意就以为答案是0.其实a在初始化时花括号中的是逗号表达式,并不是初始化列表。所以a中的元素其实是 {1,3}{5,0}{0,0},所以 p[0] 是1

eg3.

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的整形数组。
在这里插入图片描述
又因为指针减指针代表中间的元素个数,结果就是-4,但是用 %p格式打印时是无符号的 打印的是-4的补码,所以是一个很大的数
在这里插入图片描述

eg4.
struct Test
{
	int Num;
	char* pcName;
	short sDate;
	char cha[2];
	short sBa[4];
}* p;
//假设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;
}

这题主要是知道指针类型决定步长,struct test类型加一等于p加20,即0x00100014
p强转为无符号长整型加1即是直接加一为0x00100001,unsigned int
类型加一为4个字节,即为 0x00100004 总之就是类型决定了步长。

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

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

相关文章

初级篇Nginx笔记

第一章、Nginx的目录结构以及运行原理Nginx的目录结构[rootlocalhost ~]# tree /usr/local/nginx/usr/local/nginx├── client_body_temp # POST 大文件暂存目录├── conf # Nginx所有配置文件的目录│ ├── fastcgi.conf # fastcgi相关参数的配置文件│ ├── fastcgi.…

在maven项目当中创建第一个jdbc程序

大家好&#xff0c;今天给大家分享在Maven环境中创建jdbc程序 这是Maven项目的创建方式 跟着一步一步做就可以了 然后&#xff0c;创建好的Maven项目应该是这样的 导入相关的依赖 <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-ja…

PHP date() 函数

PHP date() 函数用于格式化时间/日期。 PHP date() 函数 PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。 时间戳是一个字符序列&#xff0c;表示一定的事件发生的日期/时间。 语法 string date ( string $format [, int $timestamp ] ) 参数描述format必需。规…

Python下载ts文件视频且合并

目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8&#xff0c;并做相应处理 2.下载ts文件 三、合并ts文件 一、ts文件的由来 ts文件&#xff0c;ts即"Transport Stream"的缩写&#xff0c;特点就是要求从视频流的任一片段开始都是可以独立解码的&#xff…

Pytorch 权重衰减

目录 1、权重衰减 2、L2正则化和L1正则化 3、高维线性回归演示权重衰减 1、权重衰减 一般来说&#xff0c;我们总是可以通过去收集更多的训练数据来缓解过拟合。 但这可能成本很高&#xff0c;耗时颇多&#xff0c;或者完全超出我们的控制&#xff0c;因而在短期内不可能做到…

OpenTelemetry日志体系

前言 OpenTelemetry为了实现其可观测性有三大体系&#xff1a;Trace&#xff0c;Metrics和Log。本文将对于OpenTelemetry实现的日志体系进行详细的讲述。 日志 说到日志相比大家都能侃侃而谈&#xff1a;帮助快速定位出现的问题&#xff0c;数据追踪&#xff0c;性能分析等等…

联合证券|新年再现“A吃A” 建发股份拟控股美凯龙

2022年&#xff0c;A股上市公司之间的并购超越10起。2023年伊始&#xff0c;上市公司“A吃A”或将再添新事例。 建发股份(600153)1月8日晚公告&#xff0c;公司正在谋划经过现金方法协议收购红星美凯龙控股集团有限公司&#xff08;以下简称“红星控股”&#xff09;持有的美凯…

导致 MySQL 索引失效

1、索引失效情况1&#xff1a;非最左匹配 最左匹配原则指的是&#xff0c;以最左边的为起点字段查询可以使用联合索引&#xff0c;否则将不能使用联合索引。 我们本文的联合索引的字段顺序是 sn name age&#xff0c;我们假设它们的顺序是 A B C&#xff0c;以下联合索引的…

YOLOv8来啦 | 详细解读YOLOv8的改进模块!YOLOv5官方出品YOLOv8!

YOLOv8是Ultralytics开发的 YOLO&#xff08;You Only Look Once&#xff09;物体检测和图像分割模型的最新版本&#xff0c;详细介绍可以参考Ultralytics发布的网址&#xff0c;可以通过ultralytics python 包获取代码&#xff0c;暂时还没有官方公布代码 安装ultralytics py…

再见,Python 循环,向量化已超神

使用向量化 -- Python中循环的超级快速替代品 我们在几乎所有的编程语言中都学习过循环。所以&#xff0c;默认情况下&#xff0c;只要有重复性的操作&#xff0c;我们就会开始实施循环。但是当我们处理大量的迭代&#xff08;数百万/数十亿行&#xff09;时&#xff0c;使用循…

啊哈哈哈,2023年Python学习清单来喽;这清单都上齐了,怎么不收藏啊

不知不觉已经在CSDN写了三百多篇博客&#xff0c;这些博客中&#xff0c;Python相关的内容占了绝大多数&#xff0c;而这些与Python有关的内容中&#xff0c;绝大多数又都是我个人学习的总结&#xff0c;本文希望把我的Python学习过程做一个总结&#xff0c;也希望能够帮助不同…

【Java】阻塞队列

【Java】阻塞队列 什么是阻塞队列&#xff1f; 阻塞队列&#xff08;BlockingQueue&#xff09;是一个支持两个附加操作的队列。这2个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法&#xff1a;当队列满时&#xff0c;队列会阻塞插入元素的线程&#xff0c;直到…

4.3 集成运放电路简介

从本质上看&#xff0c;集成运放是一种高性能的直接耦合放大电路。尽管品种繁多&#xff0c;内部结构也各不相同&#xff0c;但是它们的基本组成部分、结构形式和组成原则基本一致。因此&#xff0c;对于典型电路的分析具有普遍意义&#xff0c;一方面可以从中理解集成运放的性…

MapGIS用投影变换功能绘制多条测线

1 问题的提出 在做测线设计的时候,经常要在MapGIS里投点,投线。投点可以用section自带功能实现,但投线还是另有讲究的。可以用MapGIS自带的投影变换功能来实现。 先看下我已知线在奥维地图里是什么样的。 下面就来对这些线,进行投影变换,生成wl线文件,从而可以放入设计…

1. 【prometheus 学习】架构Architecture

prometheus是开源的系统监控及告警系统&#xff0c;很多企业、互联网公司应用prometheus&#xff0c;搭配可视化的grafana&#xff0c;实现对系统的全面度量。 prometheus应用的场景&#xff1a; 1&#xff09;对于数据准确率要求不高&#xff0c;可以粗略反映监控数据走势的场…

前端实战:Vue实现数据导出导入案例

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️荣誉&#xff1a; CSDN博客专家、数据库优质创作者&#x1f3c6;&…

linux内核调度浅析

目录 进程控制块PCB 就绪队列结构体 调度队列成员 下一个进程的选择 进程切换 加入就绪队列 linux进程调度相关的知识再重新梳理一遍。抽取主要数据结构中的主要成员&#xff0c;以最简单的方式实现进程调度。 进程控制块PCB task_struct /* 进程PCB */ struct task_s…

人脸识别速度超高识别度超高项目,可实时进行检测,一看就会!

1.本项目属于pytorch-facenet项目&#xff0c;核心代码是facenet算法&#xff0c;经过1周的代码修改&#xff0c;可以进行入库和识别的连续操作&#xff0c;经过测试&#xff0c;识别效果很好&#xff0c;在GPU环境中可以进行实时摄像头的识别&#xff0c;同时项目将放在百度网…

知行之桥传输带附件的文件示例

在大多数的项目中&#xff0c;交易伙伴往往只要求传输报文消息&#xff0c;业务数据经由报文内容来进行传输。但有些交易伙伴也会要求传输带附件的文件&#xff0c;比如在与大众和延锋汽车YFAI对接的项目当中&#xff0c;交易伙伴要求传输VDA4951 ENGDAT报文&#xff0c;该业务…

vue3 销毁组件方法

问题描述&#xff1a;使用elementplus的dialog,当关闭弹窗后不刷新页面&#xff0c;直接再次打开发现弹窗中还存留上一次的数据。尝试定义关闭事件&#xff0c;或者使用api中提供的属性destroy-on-close 都不行。后来发现这是一个误区。弹窗关闭时并不代表这个组件已经被销毁了…