参数和指针的问题
#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的作用是把输入的数组变成每个小元素里面只有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: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 sunrise085 发表于 2020-3-18 10:43
数组是顺序排列,函数传参实际传递的是数组的初始地址。是可以改变行列长度的,甚至还可以改变维度。
哇你们都是最佳答案! 都太好了!
页:
[1]