努力学C的阿通 发表于 2023-9-15 20:32:16

参数与指针课后题

#include <stdio.h>

void func(int b[]);

void func(int b[])
{
      printf("%d\n", b);
}

int main(void)
{
      int a = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
      };

      func(a);

      return 0;
}

请问这个打印出来为什么是9?+
先讲讲我的思路。func(a)会实现func(int a[]),实现后是个3列的数组。所以应该是按照下列排序
123
456
789
10 11 12
最后要打印a,所以不应该是打印5吗?为什么是打印9?先谢谢你们的回答

isdkz 发表于 2023-9-15 20:32:27

在这段代码中,我们定义了一个二维数组a,它有3行4列。我们调用了函数func(a),将数组a作为参数传递给函数。函数func的参数是一个二维数组b,它有两个维度,第一个维度没有指定大小,第二个维度的大小为3。这意味着,我们可以传递一个有任意行数但列数为3的二维数组给函数func。在函数func中,我们打印了b的值,它是数组b的第三行第三列的元素。因为我们传递给函数的是数组a,所以b实际上是a,即数组a的第三行第三列的元素,也就是9。所以,最终打印的结果是9。

yinda_peng 发表于 2023-9-16 11:11:47

下标是从0开始啊

yinda_peng 发表于 2023-9-16 11:12:14

5应该是a才对
页: [1]
查看完整版本: 参数与指针课后题