将变量中的值和变量的值存储到数组会产生不同的输出

时间:2017-11-02 21:00:15

标签: c

我遇到了这个问题。

int *foo(int *string,int len)
{
    int *newHex;
    int i=0,temp=0x00,l;
    int mask = 0xFF;
    printf("\nThe values of variable: ")
    for (i=0;i<len/2;i++)
    {
        //storing value in a variable
        l = ((string[i] & (mask>>i+1)) << i) | temp;                               
        temp = string[i] >> (7-i);
        printf("%d ",l);   //printing the variable
        newHex[i] = l;    //storing the value in an array
    }
    return (&newHex[0]);   //returning the base address of array
}

//in main
int *hex;
printf("\nThe values of array: ")
hex = foo(hex,len);
for (i=0;i<len/2;i++)
    printf(": %d ",hex[i]);

当我尝试执行这段代码时。

当我打印&#39;的值时,在函数foo中

l&#39;变量我得到了所需的输出。然后我将线索复制到数组&#39; newHex&#39;。 但是在main中打印数组的值。我得到不同的输出。 我很困惑为什么会这样。这两个值应该匹配正确。我在这里失踪了什么。?

提前感谢。

2 个答案:

答案 0 :(得分:3)

newHex没有数组,这只是一个未初始化的指针。此代码具有未定义的行为。

答案 1 :(得分:0)

您拥有不同值的原因是因为您使用了变量newHex错误。当您在函数中声明* newHex时,您没有将其声明为数组。您将其声明为常规整数。但是之后你将l的值赋给newHex就像它是一个数组一样。为了解决你的问题,将你声明的newHex更改为数组。在主要功能和功能中都这样做。

在主要功能中:

int *hex[len/2];

在你的功能中:

int *newHex[len/2];