[STM32F1] stm32f100数组赋值问题

[复制链接]
1620|25
 楼主| probedog 发表于 2024-7-25 15:07 | 显示全部楼层 |阅读模式
uint8_t buf[10];
buf[0] = 33;
buf[1] = 34;
结果是
buf[0]  33
buf[1]  34
buf[2]  34
有没有人碰到过这种情况,帮我看下是哪里不对
ClarkLLOTP 发表于 2024-7-25 19:51 来自手机 | 显示全部楼层
有啥问题啊?
Bowclad 发表于 2024-7-26 11:26 | 显示全部楼层
是不是循环多了一次啊
未说出口的像你 发表于 2024-8-22 12:06 | 显示全部楼层
你赋值没啥问题啊,可以清掉buf2这个数组就好了
在曼谷的春 发表于 2024-8-22 15:00 | 显示全部楼层
在你的代码中,buf[2] 被赋值为 34 的情况并不存在,因为你的代码只给 buf[0] 和 buf[1] 赋了值。如果你在实际运行时发现 buf[2] 的值为 34,那么这可能是内存越界写入了
一只眠羊 发表于 2024-8-22 17:00 | 显示全部楼层
在其他部分的代码中,可能存在对 buf 数组的越界写入操作,导致 buf[2] 被意外地赋值为 34。这种情况下,你需要检查整个程序中所有对 buf 数组的操作,确保没有越界写入。
月亮一键变蓝 发表于 2024-8-22 19:00 | 显示全部楼层
未初始化的内存:如果 buf 数组在声明时没有被初始化,那么 buf[2] 的值可能是随机的,这取决于它在内存中的位置以及之前存储在该位置的数据。在这种情况下,确保在声明数组时进行初始化,或者在使用数组之前将其清零。
失物招領 发表于 2024-8-22 21:00 | 显示全部楼层
编译器优化:某些编译器优化可能会导致意外的行为,尤其是在没有正确使用编译器指示符的情况下。确保你的编译器设置和优化级别没有导致这种问题。
我吃小朋友 发表于 2024-8-22 23:00 | 显示全部楼层
硬件故障:在极少数情况下,硬件故障(如内存损坏)也可能导致这种意外的行为。
将爱藏于深海 发表于 2024-8-23 02:00 | 显示全部楼层
检查整个程序中所有对 buf 数组的操作,确保没有越界写入。
春日负喧 发表于 2024-8-23 04:00 | 显示全部楼层
在使用 buf 数组之前,对其进行初始化,例如使用 memset 函数将其清零。
她已醉 发表于 2024-8-23 12:00 | 显示全部楼层
使用调试工具(如断点、内存检查工具)来检查 buf 数组的内存状态。
温室雏菊 发表于 2024-8-23 14:00 | 显示全部楼层
如果可能,尝试在不同的编译器或不同的硬件上运行程序,看看问题是否依然存在。
铁血丹心LLLL 发表于 2024-8-28 01:05 | 显示全部楼层
如果你意外地写入了buf的其他位置,可能会影响到你看到的内容。
铁血丹心LLLL 发表于 2024-8-28 01:05 | 显示全部楼层
有时候,编译器优化可能会影响代码的行为。
铁血丹心LLLL 发表于 2024-8-28 01:06 | 显示全部楼层
也可能是其他代码部分导致的问题。 试试这个代码。
看看有没有问题,如果没问题就是其他代码部分导致的问题。
#include <stdio.h>
#include <stdint.h>

int main() {
    uint8_t buf[10];
    buf[0] = 33;
    buf[1] = 34;
    // Print values
    printf("buf[0] = %d\n", buf[0]);
    printf("buf[1] = %d\n", buf[1]);
    printf("buf[2] = %d\n", buf[2]);
    return 0;
}
Clyde011 发表于 2025-3-18 08:23 | 显示全部楼层
你能贴一下完整代码吗?这样更容易看出问题,有可能是某个地方的 for 循环或者指针操作写错了。
公羊子丹 发表于 2025-3-18 08:24 | 显示全部楼层
你有没有用 memset(buf, 0, sizeof(buf)) 先清零数组?看看是不是数组在其他地方被写乱了。
周半梅 发表于 2025-3-18 08:25 | 显示全部楼层
这个问题可能是调试器显示错误,你试试 printf 输出 buf[2],看看实际值是不是 34?
帛灿灿 发表于 2025-3-18 08:27 | 显示全部楼层
你有没有在其他地方操作 buf?有时候数组越界写入或者指针问题可能会导致这个情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

493

主题

3343

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部