C 为什么变量和返回乘法?
在以下代码中:C 为什么变量和返回乘法?,c,arrays,operations,C,Arrays,Operations,在以下代码中: void fusioneArray(int v[], int vL, int w[], int wL[], int *fusione) { int i,j,temp; int k=0; printf("%d",wL+vL); for(i=0;i<vL;i++) { fusione[k]=v[i]; k++; } for(j=0;j<wL;j++) { fusione[k]=w
void fusioneArray(int v[], int vL, int w[], int wL[], int *fusione)
{
int i,j,temp;
int k=0;
printf("%d",wL+vL);
for(i=0;i<vL;i++)
{
fusione[k]=v[i];
k++;
}
for(j=0;j<wL;j++)
{
fusione[k]=w[j];
k++;
}
}
int main()
{
int v[5]={1,2,3,4,5};
int w[5]={5,4,3,2,1};
int i=0;
int fusione[10];
fusioneArray(v,5,w,5,fusione);
}
void fusioneArray(int v[],int vL,int w[],int wL[],int*fusione)
{
int i,j,温度;
int k=0;
printf(“%d”,wL+vL);
对于(i=0;i,因为wL
是代码中的指针,因此您正在执行指针算术,而不是标准整数算术:
wL+vL=wL+vL*sizeof(整数)
由于在大多数平台上,int
是4字节,因此您的wL+vL
将变成5+5*4=25
,这就是您得到的结果。只需将int-wL[]
替换为正确的int-wL
,您将获得所需的行为。int-wL[]
?你的意思是int-wL
?有时甚至比这更有趣,因为这是一种编译器定义的东西。当我在简单的算术中得到大量负数时,我知道我在某个地方弄错了指针。