c - c中的指针运算和二维数组?

标签 c arrays multidimensional-array

我是 C 的新手,被“如何将多维数组传递给函数”卡住了。我知道你必须传递列大小,这样如果你想从 a[0][0]a[1][0] 它可以计算一维数组的大小,可以跳过它。

我写了一个小程序:

#include<stdio.h>
void foo(char[][2]);
int main()
{
     char arr[2][2] = {'a','b','c','d'};

     foo(arr);
     return 0;
}

void foo(char temp[][2])
{
      temp++;
      printf("%c",*temp);
}

我预计此代码将打印字母 c,因为 temp 最初指向 'a',一旦我们递增它,它将跳过第一个一维数组并转到第二个一维数组的第一个元素,即 'c'。但我猜它不会那样工作。

请解释编译器如何计算这些地址。

最佳答案

指针算法很好。您只是忘记取消引用类型为 char[2]*temp

将其更改为**temp,您将获得输出c

关于c - c中的指针运算和二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908427/

相关文章:

c - 具有 avx 支持的 nvcc 找不到 gcc 内置内在函数

c++ - 声明一个有值的数组

java - 使用二维数组排序

c - 从参数为 4 的 c 函数返回一个字符串

javascript - 来自 Javascript 的 C 中的 Emscripten OOB 异常

c - 在 C 中使用 GoString

javascript - 在 AngularJS 中,为什么我无法将资源 promise 的回调中的数组分配给 Controller 中的范围?

c - 在 C 中分配和使用对齐的 double 组

java - boolean 数组和无限循环的问题

java - 如何将 List<List<Object>> 转换为多维数组?