指针、数组、printf

2024-02-06

我正在尝试使用一个数组来保存调查的输入,该调查的每一侧都具有相同的正值,但有一个指针指向数组的中心,因此可以使用负指针值来访问该数组。

例如,数组将保存从 0 到 30 的值,指针将指向 15,系统将提示用户输入 -15 到 15 之间的值,其中用户值所在的数组将递增。

如果我的逻辑还不完全正确,我没关系,但我现在遇到的问题是增加值(我不确定我是否正确地做到了这一点)ptr[userInput]++,并输出这些值printf。我看到别人的帖子关于将数组传递给printf实际上是传递一个指向数组的指针,那个人说用以下任一方法取消引用它两次**ptr or (*ptr)[0],但我的编译器(Mac XCode)似乎不喜欢它。

有什么想法吗?这是我的代码。我评论了我的问题:

#define ENDPOINT 15
#define TERMINATE 999
#define TEST_FILE "TestFile6.txt"

void RecordOpinions(void)
{
    int record[2 * ENDPOINT + 1];
    int *ptr = &record[ENDPOINT + 1];
    int userInput;
    int loopCount = -ENDPOINT;

    printf("ptr:%d\n", *ptr);  // this was a test for me trying to figure out how to 
                               // print the value of the ptr.

    printf("Please enter your opinion of the new TV show, Modern Family from ");
    printf("-%d(worst) to 0 to +%d(best).  Entering %d ", ENDPOINT, ENDPOINT, TERMINATE);
    printf("will terminate and tabulate your results: \n");

    scanf("%d", &userInput);
    while (userInput != TERMINATE) {
        if (userInput > ENDPOINT || userInput < -ENDPOINT) {
            printf("Invalid entry.  Enter rating again: ");
        }
        else {
            printf("You entered: %d\n", userInput);

            ptr[userInput]++;      // not sure if this is the right way to increment 
                                   // the array at the user's input value.
        }
        scanf("%d", &userInput);
    }
    printf("Rating entry terminated.\n");
    printf("Ratings:.\n");
    for (; loopCount <= ENDPOINT; ) {
        printf("%d\n", ptr[loopCount++]);   // this part is where I also need help
                                                // in trying to print out the value of
                                                // the ptr, not the address.
    }
}

就您在问题中提出的直接问题而言,您的代码完全没问题。 IE。您正在正确使用“双面”数组(不,当您printf数组中的值)。

我看到的一个问题是您忘记初始化(分配初始值)您的record数组,这意味着无论您如何使用它,输出无论如何都是垃圾。

另外,正如 Dave Hinton 在评论中指出的那样,如果您想使用-ENDPOINT to +ENDPOINT范围从ptr起源,你需要初始化你的ptr with &record[ENDPOINT],不与&record[ENDPOINT + 1]。否则,如果用户输入ENDPOINTvalue 作为索引,最终会在右端出现越界访问。 (并且值record[0]左端将始终保持未使用状态。)

附:我会做一些“风格”的改变,但在这种情况下它们不是重点。

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

指针、数组、printf 的相关文章

  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy

随机推荐

  • 我应该使用 WinForms 还是 WPF 来使用网络摄像头拍照?

    我们有一个 Logitech 网络摄像头 我们希望将其与 NET 一起使用 它需要识别设备并能够拍照 我们刚刚安装了 VS 2008 我想知道 Microsoft 是否通过 WPF Silverlight 等一些较新的东西使与设备的交互变得
  • 由于“私有”保护级别,func 无法访问

    我正在尝试使用 Swift 3 将我的项目从 Xcode 8 中的 iOS 8 迁移到 iOS 10 我遇到了一个错误 在我的扩展中我声明了一些文件私有函数 并且由于以下原因 这些函数中的方法无法访问私人保护级别 这是我收到错误的地方 ex
  • 配置 IDLE 以使用 Unicode

    如何让 IDLE 使用 UTF 8 作为 Python 文件的默认编码 IDLE 设置中没有 编码 选项 就放特别评论行 https docs python org 2 tutorial interpreter html highlight
  • setExpressCheckout 和 SSL/TLS 错误

    我正在尝试开发一个简单的应用程序 使用户能够通过 Paypal API 从网站购买服务 该应用程序使用 C 在 ASP NET 上运行 我在尝试与 Paypal API 进行合作方面运气不佳 我调用的方法是 SetExpressChecko
  • SQL Server JDBC 驱动程序比较

    目前我们使用jtds http jtds sourceforge net 用于连接到我们的 SQL Server 数据库 我一直理所当然地认为我们出于性能和可靠性原因而使用它 但是 它的使用早于我的就业日期 综上所述 我们现在正在考虑迁移到
  • Eclipse插件开发问题

    我正在编写一个 Eclipse 插件 并且项目环境配置正确 我相信 我能够编译解决方案 而不会出现任何编译时错误 以下是在调试解决方案时引发异常的代码片段 我确信所有必需的插件和外部 jar 都已正确配置 我已经尝试了用户在互联网上建议的几
  • InputMethodManager 持有对 tabhost 的引用 - 内存泄漏 - OOM 错误

    查看层次结构如下TabActivity gt ActivityGroups gt Activities Using MAT我找到TabWidget被引用TabHost这是由引用的InputMethodManager hence TabWid
  • Visual Studio 2015 中“无法引用默认构造函数”

    我在 Visual Studio 2015 中遇到一个非常奇怪的错误消息 以下精简代码 struct A A int val 0 x val int x 0 struct B A static int y int B y 1 struct
  • plv8 的缺点或限制?

    我正在使用 PLV8 为 PostgreSQL 编写触发器和存储过程 到目前为止 我还没有真正看到与 PLPGSQL 相比的缺点 特别是如果使用 JSON 它似乎比 PLPGSQL 更智能 使用 PLV8 是否有已知的缺点或限制 PLV8
  • jquery .on() 只工作一次

    我有一个包含多个复选框输入的表
  • 当存在多个实现时,优先考虑容器内的 OSGi 服务选择

    我正在玩 OSGi 并且有一些捆绑包 捆绑包 A 和 B 都包含实现单个接口的注册服务 第三个包 C 包括用于查找实现前面提到的接口的服务的代码 A 和 B 捆绑包具有不同的版本号 但 C 似乎从第一个启动的捆绑包中获取服务 我已经更改了启
  • C++ RTTI 可行示例 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Cocoa 应用程序中处理 Cmd-Q(以及以编程方式菜单项“退出应用程序”)

    我创建了一个只有一个窗口的游戏应用程序 应用程序的创建无需 xib 文件的帮助 如下所述 如何创建 GUI 并以编程方式对 Cocoa 事件做出反应 https stackoverflow com questions 656129 how
  • C# WPF - 如何修改 ToolBar.ButtonStyleKey 样式

    我需要在鼠标悬停时显示工具栏按钮边框 否则隐藏它 我尝试执行以下操作
  • 本土化。扩展 ASP.NET Resx 资源提供程序

    对于我的网站 我有一个用于本地化目的的自定义资源提供程序 本地化字符串存储在数据库中 它工作得很好 但我希望它能够与默认的 Resx 资源提供程序一起使用 在 resx 资源中查找本地化字符串 如果不存在 则从数据库中提取它 但看起来一旦我
  • Grpc Client 抛出 Grpc.Core.RpcException (响应协议降级为 HTTP/1.1。)

    我度过了最后三天 阅读焦点 尝试不同版本的 VS 和 NET 检查 Stackoverflow 中的问题 github 中的问题 关于我的 Grpc 客户端 服务器启动正常但客户端无法工作 我尝试过Grpcurl 工作正常 but C 客户
  • Javascript 检测关闭加载了另一个域的弹出窗口

    我正在打开一个弹出窗口并将 onbeforeunload 事件附加到它 如下所示 win window open http www google com width 300px height 300px win onbeforeunload
  • 在书写模式下设置垂直中间

    我有一个带有一些文本的 div 和writing mode vertical rl 现在我希望这段文字位于中间 但是vertical align middle 即使设置也不起作用line height a background color
  • 使用 Outlook REST API 时为什么日历 ID 会发生变化?

    我们构建了一个使用 Outlook REST API V1 和 V2 版本的应用程序 我们偶尔会看到用户日历更改的日历 ID 具体来说 我们使用 GET 获取日历https outlook office com api v2 0 me ca
  • 指针、数组、printf

    我正在尝试使用一个数组来保存调查的输入 该调查的每一侧都具有相同的正值 但有一个指针指向数组的中心 因此可以使用负指针值来访问该数组 例如 数组将保存从 0 到 30 的值 指针将指向 15 系统将提示用户输入 15 到 15 之间的值 其