如何将二维指针数组作为 const 传递?

2024-03-27

如果我创建一个二维指针数组并将其传递给一个函数:

int main()
{
    int* array[2][2];

    int a = 5;
    int b = 10;
    array[0][0] = &a;
    array[1][1] = &b;

    test(array);
}

我如何定义这个函数以使以下 3 个语句都不可能出现?

void test(int* array[2][2])
{
    int c = 20;

    // statement 1:
    *(array[0][0]) = c;

    // statement 2:
    array[1][1] = &c;

    // statement 3:
    int* array2[2][2];
    array = array2;
}

我试过这个:

void test(int const * const array[2][2])
{
    int c = 20;

    // statement 1:
    *(array[0][0]) = c;     // is no longer possible

    // statement 2:
    array[1][1] = &c;       // is no longer possible

    // statement 3:
    int* array2[2][2];
    array = array2;         // is still possible
}

由于 const 从右到左工作,因此第一个 const 禁止通过取消引用数组指针所指向的 int 值来更改这些指针(语句 1),第二个 const 禁止更改指针本身(语句 2)。

但我不知道如何使数组本身成为常量,以便名为“array”的变量(在我的理解中是指向数组第一个元素的指针)无法更改为指向另一个第一个元素/数组(语句 3)。

非常感谢帮助。谢谢。


void test(int const * const array[2][2])

衰减为:

void test(int const * const (* array)[2])

它可以是 const:

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

如何将二维指针数组作为 const 传递? 的相关文章

  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 为什么 set_symmetry_difference 无法与比较器一起使用?

    Example program include
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 是否有相当于 Clang/LLVM 的 .spec 文件,在哪里可以找到参考?

    The gcc驱动程序可以配置为使用特定的链接器 特定的选项和其他细节 例如覆盖系统头 specs files 当前 截至撰写本文时 GCC 版本 4 9 0 的手册此处描述了规范文件 https gcc gnu org onlinedoc
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • CMTime 和 AVFoundation 中单帧的移动

    我正在尝试使用 AVFoundation 播放视频 我使用以下代码作为将播放前进一帧的按钮 它间歇性地工作 在某些执行中它会做正确的事情并前进一帧 但大多数时候我必须按按钮 3 或 4 次才能前进一帧 这让我认为这是某种精度问题 但我无法弄
  • 为什么单函数访问器似乎被认为是坏习惯?

    我经常看到 即在 Slim 框架内 单一函数访问器风格 如下面的 1 已弃用 取而代之的是经典的 Java ish 2 函数访问器 get set 如下面的 2 就我个人而言 我更喜欢更少的代码行 在 1 中 和更少的输入 get set
  • Java多线程数据库访问[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对于多线程 Java 应用程序来说 确保所有线程同步访问数据库的最佳解决方案是什么 例如 每个线程代表单独的事务 并且首先检查数据库的
  • 使用 FFT 进行 Matlab 模板匹配

    我正在努力解决 Matlab 中傅立叶域中的模板匹配问题 这是我的图片 艺术家是 DeviantArt 上的 RamalamaCreatures 我的目标是在负鼠的耳朵周围放置一个边界框 就像这个例子 我使用normxcorr2执行模板匹配
  • Stripe webhook 签名失败 - Stripe.net

    我正在尝试使用 Jayme Davis 的 C 库 Stripe net 来实现 stripe webhook 我已经在条带仪表板中设置了测试端点并生成了秘密 端点命中良好 并将使用 StripeEventUtility ParseEven
  • Django Celery 内存未释放

    在我的 django 项目中 我有以下依赖项 Django 1 5 4 django celery 3 1 9 amqp 1 4 3 海带 3 0 14 librabbitmq 1 0 3 按照建议https stackoverflow c
  • MongoDB:文档大小会影响查询性能吗?

    假设一款手机游戏由 MongoDB 数据库支持 其中包含User包含数百万份文档的集合 现在假设必须与用户关联的几十个属性 例如一个数组 id的值Friend文件 他们的用户名 照片 一系列 id的值Game文件 上次登录日期 游戏货币数量
  • C++ 传递字符串文字而不是 const std::string&?

    我有以下代码 使用 g 进行编译时没有警告 Wall pedantic include
  • Kotlin 中带有 val 的循环引用

    在 Kotlin 中 假设我有data class A val f B and data class B val f A 我想初始化本地var a A and var b B这样a f is b and b f is a A f and B
  • CUDA __syncthreads() 编译正常,但带有红色下划线

    我已经使用 CUDA 4 2 一周了 但遇到了一些问题 当我编写 syncthreads 函数时 它会带有下划线 看起来是错误的 然后 如果我将鼠标放在该函数上 则会出现一条消息 标识符 syncthreads 未定义 但是当我编译我的项目
  • VB6 解析器/词法分析器/脚本编写器

    我有一个 VB6 游戏 它运行得很好 但我一直在考虑创建一个脚本引擎的想法 我想我希望 VB6 为我读取纯文本脚本文件 然后 lex parse execute 它们 我有很好的编程经验 之前也搭建过一个简单的C编译器 以及一个LOGO模拟
  • Android ExpandableListView 和 onChildClick 不起作用

    我已经阅读了很多与我遇到相同问题的线程 但我无法弄清楚发生了什么 我有一个可扩展的列表视图 但我无法使 onChildClickListener 工作 onGroupClickListener 工作正常 但我并不真正需要它 我看了很多例子
  • 在 Cocoa 中创建动画 GIF - 定义帧类型

    我已经能够改编在 SO 上找到的一些代码 从我的视图的 屏幕截图 生成动画 GIF 但结果是不可预测的 GIF 帧有时是完整图像 完整帧 替换 模式 正如 GIMP 所标记的那样 其他时候只是与上一层的 差异 组合 模式 据我所知 当涉及的
  • 如何自动初始化 Perl 中的所有标量变量?

    Perl 自动初始化变量 https stackoverflow com questions 260703 when does perl auto initialize variables to undef默认情况下 有没有办法覆盖这个默认
  • 获取特定 S3 对象的下载计数

    我有许多 S3 对象可供我的客户使用 由于我想按使用情况向客户计费 我想知道是否有任何聪明的方法来获取给定文件的下载次数 或者 我想我可以解析 S3 提供的日志文件 但对于每个客户 1000 万次以上的提取 这可能是一项艰巨的任务 有任何想
  • $rootscope 值在控制器中未定义

    我在运行中定义了一个 rootscope 对象 如下所示 Start the AngularJS App var angularApp angular module angularApp Run at the start of the An
  • C# 9 中的 Init-Only 和 ReadOnly 有什么区别?

    我正在经历C 9 新特性 https devblogs microsoft com dotnet welcome to c 9 0 即将发布 仅初始化 https devblogs microsoft com dotnet welcome
  • 在R中用渐变比例填充多边形

    我想创建一个仪表来可视化一个变量对另一个变量是否有或多或少的影响 我构建了一个函数来绘制仪表 并用 3 种不同的颜色填充它 gg gauge lt function pos breaks c 0 33 66 100 determinent
  • 使用 --allow-releaseinfo-change 进行 apt-get update 的缺点

    参考这个issue https stackoverflow com questions 68802802 repository http security debian org debian security buster updates
  • 如何将二维指针数组作为 const 传递?

    如果我创建一个二维指针数组并将其传递给一个函数 int main int array 2 2 int a 5 int b 10 array 0 0 a array 1 1 b test array 我如何定义这个函数以使以下 3 个语句都不