| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 852 人关注过本帖
标题:[已解决]一个程序中#define和typedef的互换要求.请各位帮忙
只看楼主 加入收藏
casio1374633
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-3-11
收藏
 问题点数:0 回复次数:10 
[已解决]一个程序中#define和typedef的互换要求.请各位帮忙
程序如下

程序代码:
#include <stdio.h>
/*<---------           #define    string    char *       ---><----------------题目中要求改动的行------->*/
typedef   char *   string;         /*个人问题*/
int main(void)
{
   string   a[] = {"I", "like", "to", "fight,"},
            b[] = {"pinch,", "and", "bight."};
   printf("%s %s %s %s %s %s %s\n",
      a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
   return 0;
}
题目的要求是用#define替换掉typedef的行,并且,已经给出的#define示例不能通过,但是,只要添加一个字符,就可以了,

问:添加什么字符能让程序通过?

我个人的问题是:

typedef   char *   string; 这种写法是不是就是一个定义字符指针?   那么string p就是等价: char  *p 了?
还有的写法是typedef char* string 和上面那句等价吗?


[ 本帖最后由 casio1374633 于 2010-3-21 23:00 编辑 ]
搜索更多相关主题的帖子: typedef define 
2010-03-20 22:43
casio1374633
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-3-11
收藏
得分:0 
希望各位能帮帮忙~~~谢谢

静下心来,做点实事
2010-03-21 09:03
zhuyunshen
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:212
专家分:455
注 册:2009-11-22
收藏
得分:0 
#include <stdio.h>
#define    char *  string  
     
int main(void)
{
   string   a[] = {"I", "like", "to", "fight,"},
            b[] = {"pinch,", "and", "bight."};
   printf("%s %s %s %s %s %s %s\n",
      a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
   return 0;
}
2010-03-21 09:06
casio1374633
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-3-11
收藏
得分:0 
回楼上,这么用肯定不对的.

静下心来,做点实事
2010-03-21 17:07
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
有下面两种定义pStr数据类型的方法,两者有什么不同?哪一种更好一点?
  typedef char*  pStr;
  #define pStr  char*;
  答案与分析:
  通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:
  typedef char* pStr1;
  #define pStr2 char *
  pStr1 s1, s2;
  pStr2 s3, s4;
  在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。
  上例中define语句必须写成 pStr2 s3, *s4; 这这样才能正常执行。
所以程序
#define    string    char *;        /*个人问题*/
int main(void)
{
   string   a[] = {"I", "like", "to", "fight,"},
            *b[] = {"pinch,", "and", "bight."};
   printf("%s %s %s %s %s %s %s\n",
      a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
   return 0;
}
收到的鲜花
  • 地狱无明火2010-03-22 07:31 送鲜花  5朵   附言:好文章
2010-03-21 17:24
mikelr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:161
注 册:2010-3-17
收藏
得分:0 
恩,楼上解答得非常好
2010-03-21 18:00
csj_65
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:163
注 册:2010-3-12
收藏
得分:0 
5楼我拜你为师吧
2010-03-21 18:29
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:0 
5楼的是正确的哦,要加*号

坚持做对的事情,而不是容易的事情。
2010-03-21 18:32
casio1374633
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-3-11
收藏
得分:0 
哈哈~豁然开朗啊~~~

谢谢你.5楼.

静下心来,做点实事
2010-03-21 22:38
地狱无明火
Rank: 2
等 级:论坛游民
帖 子:62
专家分:71
注 册:2009-6-11
收藏
得分:0 
macro 没有 ;
2010-03-22 07:27
快速回复:[已解决]一个程序中#define和typedef的互换要求.请各位帮忙
数据加载中...
 
   



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

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