我们怎么知道这是数组中的最后一个元素?

2024-02-19

我有以下代码:

int array[5] = {1, 0, 1, 0, 0};

int i;

for(i = 0; i < 5; i++)
{
   if(array[i] == 1)
   {
      printf("found one\n");
   }
}

我们怎么知道第二个1 in the array是最后一个1我们发现? 我的意思不是保留最后的值1,我的意思是我们应该如何知道第二个1是最后一次出现了,没有再出现了吗?


您可以简单地以相反的顺序循环:

for(i = 4; i >= 0; i--)
{
   if(array[i] == 1)
   {
      printf("last 1 found!\n");
      //break or do whatever you want
   }
}

我们可以进一步改进代码如下:

int main(){
    int array[] = {1, 0, 1, 0, 0}, i;   
    for(i=sizeof(array)/sizeof(int)-1; array[i]!=1 && --i;); 
    printf("last 1 found at index = %d\n", i);
    return 1;
}

Codepad http://codepad.org/Z4jE3VaW.

第二种形式的代码有一些额外的好处:

  • 包括初始化。
  • 数组的大小独立性。
  • 快速有两种方式:短路行为 http://en.wikipedia.org/wiki/Short-circuit_evaluation的 &&,--i将在需要时执行。
  • 较小的代码(删除if(), break).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们怎么知道这是数组中的最后一个元素? 的相关文章

  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 比较数组中的文件、从文本文件中删除行、函数、日志记录

    所以我创建了这两个数组 Approved Shares 和 Current Shares Reads Approvedshare txt and makes the txt file into an array public objFSO
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 如何解决错误 AADSTS7000218:请求正文必须包含以下参数:“client_secret”或“client_assertion”

    这就是我编写代码并尝试获取输出的方式 请求正文必须包含以下参数 client secret or client assertion static async Task
  • 如何制作自定义 BASH 函数以 cd 到具有自动完成功能的某个目录

    我的项目位于 Documents EP example project命名方案 他们都生活在 Documents 我想创建一个 bash 函数 它允许我从系统上的任何位置 cd 进入项目目录 具有自动完成功能 就像这样 cdp E
  • 通过URL查询Google Adsense数据?

    有没有办法查询里面的数据谷歌 AdSense Python API https developers google com api client library python 通过网址 例如 查找特定页面上的广告点击次数 我找不到文档中列出
  • Powershell比较两个文件并生成第三个文件

    我有 2 个文件 file1 txt 和 file2 txt 我想使用 powershell 比较这两个文件并生成第三个文件 file3 txt 其中包含 file1 txt 中的所有行减去 file2 txt 中的行 以下是文件 1 和
  • 如何在Android上安装JavaCV并使用FrameGrabber

    有人可以告诉我我哪里做错了吗 这些是我遵循的步骤 从 android 开发者网站下载 adt bundle windows 创建一个新项目和一个 libs armeabi 文件夹 将 javacv android arm jar openc
  • LINQ 在字符串数组列表中搜索特定字符串

    我有一个字符串数组列表 List
  • C++ 中的简单事件系统

    我正在为我的游戏引擎设计一个简单的事件系统 我想实现以下事件调度程序接口 Create event dispatcher Dispatcher dispatcher Create objects b and c Created object
  • 使用音频队列处理中断

    我正在开发一个音频流媒体 并声明了一个中断侦听器 以在发生中断 例如来电或短信 时保存歌曲的状态 这是相关代码 在我的 AppDelegate 中 我有这个 AudioSessionInitialize NULL NULL interrup
  • 类型错误:不可散列的类型:'dict'

    这段代码给了我一个错误 TypeError unhashable type dict 谁能向我解释一下解决方案是什么 negids movie reviews fileids neg def word feats words return
  • 如何在 Android 中读取和写入 csv 文件?

    我想将 8 个整数存储到 csv 文件中 文件名将作为 EditText 的输入 并在需要时检索它们 要获取文件名 您可以使用以下命令 EditText fileNameEdit EditText getActivity findViewB
  • 增加 GO 中的堆大小

    有没有办法指示 GO 运行时使用更大的堆 我在跑步GO 1 5 我的 GO 进程目前在 GC 上花费了 34 的时间 但它只使用了 1 3 的可用系统内存 I know ulimit可用于限制最大堆大小 我已将 ulimit 设置为 16G
  • 我可以在我的 Azure 管道中使用 2 个代理池吗?

    我有一个自托管代理 它用作一种部署代理 我们软件的所有发行版本均由该代理构建 然后复制到网络位置 问题 有没有办法可以在管道中同时利用 azure pipelines Microsoft 托管池和我自己的自托管池中的代理 EDIT 不幸的是
  • 从脚本并行 nmap 数千个子网的最佳方法是什么?

    为了清点 A 类网络部分中的端口 我使用 nmap 将其扫描为数千个 C 类网络 我使用并行方式同时运行 32 个子网扫描作业 脚本的最小化版本 while read subnet do echo nmap Pn p tcpport sub
  • Azure 媒体服务将作业回调编码为 URL

    仅使用 REST API 我就可以将文件从本地计算机上传到 Azure 媒体服务并启动编码作业 然后我需要轮询作业的状态以查看它何时完成 但是 我真正想要的是 Azure 媒体服务在完成后向我的回调 URL 发送请求 有办法做到这一点吗 查
  • 在 laravel 4 中测试过滤器

    我是 Laravel 的新手 我正在尝试测试身份验证是否适用于我的网站 并且我想在测试用例中测试身份验证过程 我创建一个内存中的 sqlite 数据库 创建一个新用户并使用 gt save eloquent 的方法将其存储在数据库中 我设置
  • ALSA 记录 - 了解内存映射

    我尝试使用 ALSA 从 USB 音频设备获取输入并将其作为一系列内容写入磁盘signed short价值观 我最终得到的是看似有效的数据块 其中散布着大块的零 我猜测我的缓冲区设置不正确并且没有正确使用内存映射 我正在尝试什么 采样率 8
  • Autofac 注册程序集类型

    在 Castle 中 我曾经执行以下操作来注册来自不同程序集的类型 Classes FromAssemblyNamed MyServer DAL Where type gt type Name EndsWith Repository Wit
  • 重叠绝对定位的内容

    我遇到了一些困难这一页 http louiswalch com beta t urs 它几乎可以正常工作 红色框应位于窗口的中心 h v 作品 黄色框应贴在窗口底部 作品 当窗口小于 400 像素高时 应出现滚动条 并且黄色框应出现在滚动区
  • 按第二列中的时间戳合并多个日志文件

    我有同一天的多个日志文件 我想要做的是根据日志中的时间戳将它们合并为一个Perl script 日志 1 log 2014 06 02 21 54 38 805 INFO com HomeManeger Executor Thread 19
  • 我们怎么知道这是数组中的最后一个元素?

    我有以下代码 int array 5 1 0 1 0 0 int i for i 0 i lt 5 i if array i 1 printf found one n 我们怎么知道第二个1 in the array是最后一个1我们发现 我的