【发布时间】:2017-08-20 11:08:33
【问题描述】:
总的来说,我对指针感到很困惑,我不知道为什么会发生这种情况。通常,指向数组的指针只会打印出数组的值,但我不知道为什么会这样。有人可以解释原因或建议正在发生的事情吗?
char *showBits(int dec, char *buf) {
char array[33];
buf=array;
unsigned int mask=1u<<31;
int count=0;
while (mask>0) {
if ((dec & mask) == 0) {
array[count]='0';
}
else {
array[count]='1';
}
count++;
mask=mask>>1;
}
return buf;
}
期望它返回 dec 的二进制表示,但打印它会产生随机垃圾。
【问题讨论】:
-
val没有在任何地方定义。 -
'返回 buf;'返回指向具有自动存储的本地数组的指针 - UB。
-
array超出范围。 -
'char *showBits(int dec, char *buf)' 传入 'buf' 是没有意义的,因为你用 'buf=array;' 覆盖它
-
似乎还有一个问题:您也没有以空值终止字符串。