我们知道parameter接收参数,也就是我们给parameter赋值。如果是,为什么这个语句 int b[5]=a;
会生成一个名为 invalid initializer 的错误,而 func(a);
没问题?
#include<stdio.h>
void func(int b[5]);
int main(void)
{
int a[5]={1,2,3,4,5};
int b[5]=a;
func(a);
return 0;
}
void func(int b[5])
{
}
最佳答案
在 C 语言中,数组衰减为指向您正在使用它的上下文中的数组第一个元素的指针。
int b[5] = a;
相当于:
int b[5] = &a[0];
指向 int
的指针不能用于初始化 int
数组。
要将 b
的元素设置为与 a
的元素相同,您有以下选项。
以不同方式初始化
b
。int b[5] = {a[0], a[1], a[2], a[3], a[4]};
使用
memcpy
。int b[5]; memcpy(b, a, sizeof(a));
一个一个复制
a
的元素。int b[5]; for (int i = 0; i < 5; ++i ) b[i] = a[i];
我个人的偏好是使用 memcpy
。
关于c - 相同但为什么工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38035624/