搜索

关于C语言问题的请教

[复制链接]
568|9
 楼主 | 2015-7-25 22:16 | 显示全部楼层 |阅读模式
今天写程序 发现我定义了一个结构体系  如下
typedef  Route
{
u8 number;
u8 pathmax;
  u32 pathaddr[50];
}  RouteInformation;

RouteInformation   Route[4];
u32 *buf;
  buf=Route【0】.pathaddr; 发现这个指针是错误的,请教下编译的时候不会报错但运行的时候得不到想要的值跑飞是什么情况为什么不能这样给值。
编译器是IAR
| 2015-7-26 08:42 | 显示全部楼层
定义变量时请不要用相同的名字

使用特权

评论回复
| 2015-7-26 09:02 | 显示全部楼层
u32 *buf;
  buf=Route【0】.pathaddr; 数组前前应加地址符号

使用特权

评论回复
| 2015-7-26 10:20 | 显示全部楼层
有这样定义结构体的么?

typedef  Route
{
u8 number;
u8 pathmax;
  u32 pathaddr[50];
}  RouteInformation;


楼上, 数组前不用加地址符号

使用特权

评论回复
 楼主 | 2015-7-26 13:21 | 显示全部楼层
ddllxxrr 发表于 2015-7-26 09:02
u32 *buf;
  buf=Route【0】.pathaddr; 数组前前应加地址符号

难到要写成 &Route[0].pathaddr才可以为什么Route[0].pathaddr不能做为地址了

使用特权

评论回复
 楼主 | 2015-7-26 13:22 | 显示全部楼层
Adu0227 发表于 2015-7-26 08:42
定义变量时请不要用相同的名字

问题不是在这里了

使用特权

评论回复
| 2015-7-26 16:05 | 显示全部楼层
typedef struct Route ?

使用特权

评论回复
| 2015-7-26 20:04 | 显示全部楼层
struct

使用特权

评论回复
| 2015-7-26 21:53 | 显示全部楼层
首先把代码风格调整下

typedef struct Route
{
        u8 number;
        u8 pathmax;
          u32 pathaddr[50];
} Route;

Route routes[4];
u32 *buf = Route[0].pathaddr;

用这个代码试下看是否可以。

如果不可以看看是不是栈溢出了。你这个struct每个大小是202bytes,然后一次分配了4个,一共808bytes。可以把pathaddr的字节数改小点看是否能成功。如果成功确定是这问题

使用特权

评论回复
| 2015-7-26 23:43 | 显示全部楼层
你都没说你的CPU是啥,只说了个IAR,没有答案。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

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