数组名是指针吗?

2023-11-26

C 中数组的名称是指针吗? 如果不是,数组名称和指针变量有什么区别?


数组是数组,指针是指针,但大多数情况下数组名称是转换的到指针。经常使用的一个术语是它们decay到指针。

这是一个数组:

int a[7];

a包含七个整数的空间,您可以通过赋值将值放入其中之一,如下所示:

a[3] = 9;

这是一个指针:

int *p;

p不包含任何整数空格,但它可以指向整数空格。例如,我们可以将其设置为指向数组中的某个位置a,比如第一个:

p = &a[0];

令人困惑的是你也可以这样写:

p = a;

这确实not复制数组的内容a进入指针p(无论这意味着什么)。相反,数组名称a转换为指向其第一个元素的指针。因此该作业与前一个作业的作用相同。

现在你可以使用p与数组类似:

p[3] = 17;

这样做的原因是 C 中的数组解引用运算符,[ ],是根据指针定义的。x[y]意思是:从指针开始x, step y元素在指针指向的内容之后向前移动,然后取那里的任何内容。使用指针算术语法,x[y]也可以写成*(x+y).

为了使其能够与普通数组一起使用,例如我们的a, 名字a in a[3]必须首先转换为指针(指向a)。然后我们向前推进 3 个元素,并采取其中的任何内容。换句话说:取出数组中位置 3 的元素。 (这是数组中的第四个元素,因为第一个元素的编号为 0。)

因此,总而言之,C 程序中的数组名称(在大多数情况下)会转换为指针。一个例外是当我们使用sizeof数组上的运算符。如果a在这种情况下被转换为指针,sizeof a会给出指针的大小而不是实际数组的大小,这将毫无用处,所以在这种情况下a表示数组本身。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组名是指针吗? 的相关文章

  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • Python 从 tar.gz 导入库?

    我正在开发一个没有 root 访问权限的盒子 但是 有一个文件夹 share 可供每个人读取和写入 我想找到一种方法来放置 python 库 以便每个人都可以访问和使用它们 我发现我可以将 Egg 文件放在 share pythonLib
  • Swift 中哪些值类型支持写时复制?

    我读到了关于 Swift 中数组的写时复制实现here 与标准库中的所有可变大小集合一样 数组使用写时复制优化 阵列的多个副本共享同一存储 直到您修改其中一个副本 当发生这种情况时 被修改的阵列将用其自身唯一拥有的副本替换其存储 然后就地修
  • Android 中的 Intent 与 Content Provider

    我是android应用程序开发的新手 在研究基本的android组件时 我对意图和内容提供者感到困惑 因为两者都被用来将数据从一个应用程序 组件发送到另一个应用程序 组件 如果有意图 我们可以使用捆绑或附加功能发送数据 那么为什么我们要使用
  • 10 月 15 日 Windows 更新后 MVC 应用程序中断

    今天早上我醒来发现我的服务器上的 MVC 4 Web 应用程序已损坏 错误信息是 An exception of type System IO FileNotFoundException occurred in mscorlib dll b
  • 错误:mime-types-data 需要 Ruby 版本 >= 2.0

    我最近在 vmware fusion 中安装了干净的 ubuntu 14 04 虚拟机并更新了它 我正在尝试通过安装 mime tyes data sudo gem install mime types data v 3 2015 1120
  • 带 H:MM:SS 的精密计时器

    如何用 H MM SS 显示天文计时器 我读到默认显示 MM SS 和 H MM SS 我只找到了 MM SS 这是我的 MM SS 代码 带有开始和停止按钮 public class MainActivity extends AppCom
  • Docker-compose:应用程序容器无法连接到 Postgres

    使用 docker compose 我尝试从以下位置查看 Flask 应用程序manage py runserver与 postgres 图像连接 但出现以下错误 sqlalchemy exc OperationalError psycop
  • UserHostAddress 给出错误的 IP

    我收集了用户访问我的网站的 IP 地址的统计数据 我注意到只有两个 IP 地址 172 16 16 1 和 172 16 16 248 我用来确定 IP 地址的属性是 Request UserHostAddress IP地址信息丢失可能是什
  • 如何从 Vue.js 数组中删除项目

    我是 vue js 2 的新手 目前正在开发一个简单的事件应用程序 我已成功添加事件 但现在我想通过单击按钮来删除事件 HTML div class list group div class list group item h4 class
  • Python:无法在网页中使用selenium下载

    我的目的是从下载一个 zip 文件这是这个网页中的一个链接https www shareinvestor com prices price download html type price download all stocks bursa
  • QT4拖动窗口没有标题栏

    我正在开发的应用程序有一个自定义 UI 需要我从主窗口中删除标题栏 不幸的是 我不知道如何制作它 以便我可以在屏幕上移动应用程序 我删除标题栏的代码如下 MainWindow MainWindow QWidget parent QMainW
  • 在 Core Data 中存储照片和视频?

    我正在开发一个应用程序 可以让用户录制视频和照片 现在我想知道存储它们的最佳方式是什么 第一个想法当然是将其保存在用户的照片库中 就像他从相机应用程序记录照片一样 并使用对文件的引用 现在存在的问题是用户可以从 照片 应用程序访问和删除文件
  • iOS 6 - UIWebView loadHTMLString 无法正常工作

    如果有人遇到以下问题 请告诉我您是否能够找到解决方案 我花了几天时间试图找到解决方案 但到目前为止还没有成功 我正在使用 XCode 4 5 和 iOS 6 SDK Golden Master 基本上 我的应用程序读取 HTML 文件并将其
  • 如何在 Angular2 中使禁用的反应表单可编辑

    我使用下面的代码创建一个表单并使其只读 我是角度新手 createForm this comapnyIdentificationForm this fb group businessName Validators required adre
  • 如何在 SVG 中获取多个内容的 ScrollBars

    我想要一个包含四个 SVG 内容的容器 SVG 现在 这四个 SVG 内容的内容超出了容器 SVG 中分配给它们的区域的内容 因此我要求滚动条自动出现 以便用户可以通过滚动看到完整的 svg 内容 我尝试通过添加属性宽度和高度来建立新视口
  • 从 vc++ 调用存储在堆中的代码

    想象一下我正在做这样的事情 void p malloc 1000 char p some opcode char p 1 another opcode for the sake of the example the opcodes are
  • 在 SWT-Widgets 上自动生成 ID

    有没有办法在 SWT Widgets 上自动生成 ID 以便 UI Tests 可以引用它们 我知道我可以使用 seData 手动设置 id 但我想以某种通用的方式为现有应用程序实现此功能 您可以使用以下命令为应用程序中的所有 shell
  • python 客户端服务器编程?

    这是 python 中的多线程服务器和客户端的源代码 在代码中 客户端和服务器在作业完成后关闭连接 我想保持连接处于活动状态并通过相同的连接发送更多数据避免每次关闭和打开套接字的开销 以下代码来自 http www devshed com
  • 为什么我的解决方案如此慢以及如何提高查询性能?

    目前我已经能够优化很多性能 但仍然有点慢 最新编辑 我当前的解决方案 最快的自动取款机 但仍然很慢 并保持秩序 server router post images function req res next var image bucket
  • 数组名是指针吗?

    C 中数组的名称是指针吗 如果不是 数组名称和指针变量有什么区别 数组是数组 指针是指针 但大多数情况下数组名称是转换的到指针 经常使用的一个术语是它们decay到指针 这是一个数组 int a 7 a包含七个整数的空间 您可以通过赋值将值