Ant*_*cia 0 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[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);
}
Run Code Online (Sandbox Code Playgroud)
你可以解释一下为什么vL + wL返回*而不是+?(25而不是10)......
因为wL你的代码中有一个指针,所以你在做指针算术而不是标准的整数算术:
wL + vL = wL + vL*sizeof(int)
由于int是在大多数平台上4个字节的wL+vL变5+5*4 = 25,这是你得到的结果.只需更换int wL[]正确的int wL,你就会有所需的行为.