rty123 发表于 2020-3-18 10:27:35

参数和指针的问题

#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 求解

墨羽岚 发表于 2020-3-18 10:37:41

这个函数里func的作用是把输入的数组变成每个小元素里面只有3个数的另外一个数组。
比如这个a就会变成a,
这样一来就是a={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}
所以a就是9了{:10_298:}

sunrise085 发表于 2020-3-18 10:43:10

本帖最后由 sunrise085 于 2020-3-18 10:52 编辑

数组是顺序排列,函数传参实际传递的是数组的初始地址。是可以改变行列长度的,甚至还可以改变维度。


#include <stdio.h>

void func(int b[]);

void func1(int c[])
{
        printf("c=%d\n", c);
}
void func(int b[])
{
    printf("b=%d\n", b);
}
int main(void)
{
    int a = {
      {1, 2, 3, 4},
      {5, 6, 7, 8},
      {9, 10, 11, 12}
    };

    func(a);
        func1(a);

    return 0;
}
运行结果:
b=9
c=9

rty123 发表于 2020-3-18 11:41:39

sunrise085 发表于 2020-3-18 10:43
数组是顺序排列,函数传参实际传递的是数组的初始地址。是可以改变行列长度的,甚至还可以改变维度。




哇你们都是最佳答案! 都太好了!
页: [1]
查看完整版本: 参数和指针的问题