C语言数组和指针笔试题(一)(一定要看)

目录

  • 一维数组
    • 例题1
    • 例题2
    • 例题3
    • 例题4
    • 例题5
    • 例题6
    • 例题7
    • 例题8
    • 例题9
    • 例题10
    • 例题输出结果
  • 字符数组
    • 例题1
    • 例题2
    • 例题3
    • 例题4
    • 例题5
    • 例题6
    • 例题7

一维数组

int a[] = {1,2,3,4};
1:printf("%d\n",sizeof(a));
2:printf("%d\n",sizeof(a+0));
3:printf("%d\n",sizeof(*a));
4:printf("%d\n",sizeof(a+1));
5:printf("%d\n",sizeof(a[1]));
6:printf("%d\n",sizeof(&a));
7:printf("%d\n",sizeof(*&a));
8:printf("%d\n",sizeof(&a+1));
9:printf("%d\n",sizeof(&a[0]));
10:printf("%d\n",sizeof(&a[0]+1));

例题1

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a));

这里的a表示整个数组,计算的是整个数组的大小,因此这里的结果为
4(数组元素) * 4(int类型所占大小)=16

例题2

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a+0));

注意这里a+0的a并不是整个数组,而是表示的首元素的地址
因为只有数组名单独在sizeof()括号里时,才表示整个数组,当数组名不是单独在sizeof()括号里时就仅表示数组首元素地址,虽然二者地址是一样的,但是本质是有区别的,因此a+0实际为&a[0],&a[0]的大小为4或者8个字节
为什么这里a+0!=a[0]呢?,因为a+0本质还是一个地址,而a[0]就是数组的一个元素,并不是地址,因此只有*(a+0)才等于a[0]

例题3

int a[] = {1,2,3,4};
printf("%d\n",sizeof(*a));

*a是数组的首元素,即 * a=a[0],sizeof(a[0])=4(整形类型的大小)

例题4

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a+1));

这道题其实和例题2基本上是一样的,a+1表示的是数组首元素的地址往后移一位,即a+1=a[1],因此为sizeof(a+1)的结果为4或者8个字节
这里其实可以直接得出答案,因为我们知道这里的a是首元素地址,因此既然a+1还是地址,那么地址的大小就是4或者8个字节

例题5

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a[1]);

计算的是第二个元素的大小为4个字节(int类型的大小)

例题6

int a[] = {1,2,3,4};
printf("%d\n",sizeof(&a));

&a在之前我的一篇博客中有提到,能取整个数组地址的方式只有两种,一种是sizeof(数组名),另一种则是&(数组名)
因此**&a是整个数组的地址,既然是地址那么结果还是4或者8个字节**

例题7

int a[] = {1,2,3,4};
printf("%d\n",sizeof(*&a));

这里的**&a是整个数组的地址**,* 对整个数组解引用,因此sizeof( *&a)就是计算的整个数组的大小,所以结果就是16

例题8

int a[] = {1,2,3,4};
printf("%d\n",sizeof(&a+1));

&a是表示整个数组的地址,这里的+1不是让数组的首元素地址移动到下一位,而是直接跳过整个数组
在这里插入图片描述
既然是数组的地址,那么依然是4或者8个字节

例题9

int a[] = {1,2,3,4};
printf("%d\n",sizeof(&a[0]));

&a[0]是取的数组首元素地址,所以大小为4或者8个字节

例题10

int a[] = {1,2,3,4};
printf("%d\n",sizeof(&a[0]+1));

上题已经说了既然是首元素地址,因此这里的+1就是跳到下一个元素的地址,&a[0]+1=&a[1],大小是4或者8个字节

例题输出结果

在这里插入图片描述

字符数组

char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr));
2:printf("%d\n", sizeof(arr+0));
3:printf("%d\n", sizeof(*arr));
4:printf("%d\n", sizeof(arr[1]));
5:printf("%d\n", sizeof(&arr));
6:printf("%d\n", sizeof(&arr+1));
7:printf("%d\n", sizeof(&arr[0]+1));

例题1

char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr));

由于sizeof是只管求数组里的内存大小,而对于字符串是由字符’a’ ‘b’ ‘c’ ’ d’ ‘e’ ‘f’ '\0’组成,而一个字符的大小为一个字节,因此最后的输出结果为
7(字符串中的字符个数)*1(一个字符的内存大小)=7

例题2

char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr+0));

arr+0在之前说过,这里的arr不是整个数组的地址,是首元素的地址,因此arr+0=arr[0],既然是地址那么结果就是4或者8

例题3

char arr[] = "abcdef";
1:printf("%d\n", sizeof(*arr));

arr为数组首元素地址,对arr解引用就是数组的第一个字符a,因为是char类型,所以结果就是1

例题4

char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr[1]));

这里求的是第二个字符b,所以结果是1

例题5

char arr[] = "abcdef";
1:printf("%d\n", sizeof(&arr));

&arr是整个数组的地址,所以既然是地址那么结果就是4或者8

例题6

char arr[] = "abcdef";
1:printf("%d\n", sizeof(&arr+1));

&arr+1是跳过整个数组,但是仍然是地址,所以还是4或者8

例题7

char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr[0]+1));

arr[0]+1跳过一个元素,所以就是arr[1],但是还是地址,所以仍然是4或者8

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

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

相关文章

继续上一个爬虫,所以说selenium加browsermobproxy

继续,书接上回,这次我通过jsrpc,也学会了不少逆向的知识,感觉对于一般的网站应该都能应付了。当然我说的是简单的网站,遇到那些混淆的,还有那种猿人学里面的题目,还是免谈了。那种需要的水平太高…

Linux(Centos7)中安装Docker和DockerCompose

一、安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支 持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频…

Mysql高级——存储引擎

存储引擎 1). 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念,为通过认证安全接入的客户端提…

PY32F003F18之RS485通讯

PY32F003F18将USART2连接到RS485芯片,和其它RS485设备实现串口接收后再转发的功能。 一、测试电路 二、测试程序 #include "USART2.h" #include "stdio.h" //getchar(),putchar(),scanf(),printf(),puts(),gets(),sprintf() #include "…

C++之智能指针shared_ptr死锁问题(二百)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Nacos安装指南以及集群搭建

结合SpringCloud从基础到活用(超详细)查看 一、Windows安装 开发阶段采用单机安装即可。1.1.下载安装包 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https:…

汇报一下日常健身和锻炼方面的进展

跑步app最终从“咕咚”和“悦跑圈”二选一,锁定到悦跑圈上了。 七月太热,配速下降,但还能玩出花样 八月中旬气温稍降,配速提升,拟合抛物线 截至发博日,实际连续跑步接近600天了 截至发博日,完成2023跑量96…

警惕!1本SCI解除“On Hold”,Chemosphere等11本期刊仍被标记!

期刊动态:警惕期刊“On Hold”状态! 2023年8月,小编从科睿唯安官网整理出12本期刊处于“On Hold”状态! 参考往期推文: 警惕!10本“On Hold”期刊已被踢,仍有12本期刊被标记! 期…

Xcelium(xrun)的基础使用

Xcelium的基础使用 https://www.cnblogs.com/Alfred-HOO/articles/17416139.html 一,基础问答 1,Xcelium的由来? Xcelium(xrun)是cadence最新的仿真工具,Incisive(irun)的升级版本。 2,如何用x…

java spring cloud 企业工程管理系统源码+二次开发+定制化服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

一位参加2023 Google开发者大会 菜鸟的自卑

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…

【Blender】Blender入门学习

目录 0 参考视频教程0.1 Blender理论知识0.2 Blender上手实践0.3 FBX模型导入Unity 1 Blender的窗口介绍1.1 主界面1.2 模型编辑窗口 2 Blender的基本操作2.1 3D视图的平移2.2 3D视图的旋转2.3 3D视图的缩放2.4 修改快捷键2.5 使物体围绕选择的物体旋转2.6 四视图的查看2.7 局部…

接口测试(详细总结)

序章 ​ 说起接口测试,网上有很多例子,看了不不知道他们说的什么,觉得接口测试,好高大上。认为学会了接口测试就能屌丝逆袭,走上人生巅峰,迎娶白富美。因此学了点开发知识后,发现接口测试其实都…

Unity中程序集dll

一:前言 一个程序集由一个或多个文件组成,通常为扩展名.exe和.dll的文件称为程序集,.exe是静态的程序集,可以在.net下直接运行加载,因为exe中有一个main函数(入口函数),.dll是动态链接库&#…

机器学习:基于梯度下降算法的逻辑回归实现和原理解析

这里写目录标题 什么是逻辑回归?Sigmoid函数逻辑回归损失函数梯度下降 逻辑回归定义逻辑函数线性组合模型训练决策边界 了解逻辑回归:从原理到实现什么是逻辑回归?逻辑回归的原理逻辑回归的实现逻辑回归的应用代码示例算法可视化 当涉及到二元…

模板学堂|数据可视化仪表板大屏设计流程梳理

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场(https://dataease.io/templates/)。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板,方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&a…

Keil MDK-ARM 软件的部分常用快捷键如下

F7:编译。F8: 下载。F9:添加/取消断点。Ctrl F5:调试。Tab:将选中的内容整体右移。Shift Tab:将选中的内容整体左移。Home:将光标移至行首。End:将光标移至行末。Ctrl >:光标…

第1章_freeRTOS入门与工程实践之课程介绍

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id724601559592 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

mysql5.8 免安装版(压缩包)win10 安装

目录 1、下载MySQL5.82、如何安装、配置my.ini配置注意 3初始化mysql3.1. 初始化mysql3.2. 安装mysql服务3.3. 启动mysql3.4. 登录mysql3.5. 修改root密码3.6. 配置远程连接 Mysql5.8安装踩坑记录,推荐使用Docker安装,我是电脑虚拟化可能会蓝屏没用这个功…

htaccess绕过上传实验

实验目的 利用上传htaccess文件解析漏洞绕过验证进行上传PHP脚本木马 实验工具 火狐:Mozilla Firefox,中文俗称“火狐”(正式缩写为Fx或fx,非正式缩写为FF),是一个自由及开放源代码网页浏览器&#xff0…