我遇到了这个问题。
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中打印数组的值。我得到不同的输出。 我很困惑为什么会这样。这两个值应该匹配正确。我在这里失踪了什么。?
提前感谢。
答案 0 :(得分:3)
newHex
没有数组,这只是一个未初始化的指针。此代码具有未定义的行为。
答案 1 :(得分:0)
您拥有不同值的原因是因为您使用了变量newHex错误。当您在函数中声明* newHex时,您没有将其声明为数组。您将其声明为常规整数。但是之后你将l的值赋给newHex就像它是一个数组一样。为了解决你的问题,将你声明的newHex更改为数组。在主要功能和功能中都这样做。
在主要功能中:
int *hex[len/2];
在你的功能中:
int *newHex[len/2];