【问题标题】:How to assign pointer of two dimensional array to memory address in C/C++如何在 C/C++ 中将二维数组的指针分配给内存地址
【发布时间】:2025-12-13 05:15:01
【问题描述】:

我想给一个二维数组分配一个固定的内存地址。 例如,对于简单的整数,我们这样做: int *p = (int *)0xabcdf34;

我需要从固定位置 0xf3ab25 开始分配内存到一个二维数组。我该怎么做。请帮忙。

编辑: 我在玩回忆。我想将矩阵的所有内存分配给缓存或主内存。我想检查对计算和运行时间的影响。我正在使用模拟器,所以我有直接地址。 假设我想使用 matrix[100][100]

的矩阵

【问题讨论】:

  • 为什么?这解决了什么问题?听起来你在要求我们solve the last 10% of your problem that makes no sense.。我可能是错的,但有些上下文会很好,因为这在几乎所有情况下都是错误的。
  • 也许不是固定地址,但我确实遇到过malloc提供的地址。

标签: c arrays memory pointers multidimensional-array


【解决方案1】:

您无法决定要分配的内存地址,因为您无法决定程序的实际布局。

由编译器(静态变量)或运行时(自动变量和动态分配的内存)决定

【讨论】:

    【解决方案2】:

    类似这样的:

    int foo() {
      int (*p)[10] = (int (*)[10])0xf3ab25;
      return p[3][4];
    }
    

    【讨论】:

    • 这在一般情况下会起作用吗?我认为从表面上看这个问题可能不是一个好主意。
    • 正在考虑...我将删除反对票,直到我们从 OP 获得更多信息。很难回答你的问题。
    • 我不是他妈妈,我只是回答问题。是的,p 一个二维数组。这段代码编译得很好并产生了正确的地址算术([3][4] 的读取在初始化地址的 136 个字节的偏移处)。
    • 我想你在我修改之前看到了我的评论。是的,我同意你的观点,这就是我删除反对票的原因(尽管我有预感 OP 被误导了)。是的,声明是正确的,这对我来说是一个心理上的昙花一现。
    • 我在玩回忆。我想将矩阵的所有内存分配给缓存/主内存。并想检查计算的响应是什么。我正在使用模拟器,所以我有直接地址。我希望现在我的问题很清楚了。