2012-06-29 141 views
0

下面的代码:为什么变量和返回乘法?

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); 
} 

ü可以解释我为什么VL + W返回*代替+的? (25而不是10)...

+3

'int wL []'?你的意思是'int wL'? – Henrik

回答

7

因为wL是在你的代码的指针,这样你做的,而不是一个标准的整数算术指针算术:

W L + VL = W L + VL *的sizeof( int)

由于int在大多数平台上都是4字节,所以您的wL+vL变为5+5*4 = 25,这是您得到的结果。只需将int wL[]替换为正确的int wL,即可获得所需的行为。

+0

有时甚至更热闹地离开这个领域,因为它是一种编译器定义的东西。当我在简单的算术上得到大量的负数时,我知道我在某处弄错了指针。 – SilverbackNet

+0

我在wL中没见过[] - “ - 谢谢你的回复。:) –

相关问题