| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:求助一个复杂的关于指针的问题
只看楼主 加入收藏
lgy0751
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-9-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
求助一个复杂的关于指针的问题
先是有这样的定义:

typedef unsigned char U8;

typedef U8                    UI_character_type;

typedef UI_character_type*    UI_string_type;

typedef unsigned short  U16;
然后有这样的函数:
 /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U16 day_index;
    UI_string_type daystring;
   U8 day_str[7][4] = {"Sun", "Mon", "Tus", "Wed", "Thu", "Fri", "Sat"};
/*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
day_index = g_clndr_cntx->CalTime.DayIndex;
    daystring = day_str[day_index];
g_clndr_cntx->CalTime.DayIndex是一个表示当前日期是星期几U16定义,0为星期天,6为星期6.
函数到这里编译出问题,问题是daystring = day_str[day_index];这句话两边不相等。
我的问题是,我想让daystring正确指向day_str这个数组里面的星期几的指针,应该怎么做才正确?

搜索更多相关主题的帖子: 指针 
2009-09-24 10:26
lgy0751
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-9-24
收藏
得分:0 
如果有看不懂的请指出来 随时等着
2009-09-24 10:30
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:6 
没看出有什么问题

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-09-24 11:05
lgy0751
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-9-24
收藏
得分:0 
但是编译就是有问题。。。问题就是 daystring = day_str[day_index]; 这个等号的两边不能相等
daystring是U8的指针,day_str是U8的指针的指针,day_str[day_index]是U8的指针,我认为是这样的
2009-09-24 11:10
jig
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:6 
检查一下 day_index 是否越界。

你的代码是合乎逻辑的,没有错。

day_str[7][4]

是个实体字符串组,
day_str[0] --- day_str[6]

分别对应了 "Sun" -- "Sat" 的地址。

day_str[0] 其实就是  unsigned char * 类型,没有错。

个人网站 -  http://.h001.
2009-09-24 11:17
lgy0751
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-9-24
收藏
得分:0 
day_index不可能越界 因为有IF限定了如果小于0就等于0 大于6就等于6
我也认为他们相等 ,可是就是编译不过。。。为什么电脑就认为他们不等呢 郁闷
2009-09-24 11:24
beyond_one
Rank: 4
等 级:业余侠客
帖 子:61
专家分:206
注 册:2009-6-26
收藏
得分:6 
没有错啊

#include "stdio.h"
 
main()
{
typedef unsigned char U8;
typedef U8  UI_character_type;
typedef  UI_character_type* UI_string_type;
typedef unsigned short U16;
 
/*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U16 day_index;
    UI_string_type daystring;
   U8 day_str[7][4] = {"Sun", "Mon", "Tus", "Wed", "Thu", "Fri", "Sat"};
/*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
day_index =3;
    daystring =day_str[day_index];
printf("%s\n",daystring);
getch();
}

运行结果:Wed
检查一下day_index的结果是否正确

[ 本帖最后由 beyond_one 于 2009-9-24 11:27 编辑 ]
2009-09-24 11:26
快速回复:求助一个复杂的关于指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032216 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved