我是 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/