| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:有2个问题请教下,大侠们进………………
只看楼主 加入收藏
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
结帖率:86.11%
收藏
已结贴  问题点数:20 回复次数:6 
有2个问题请教下,大侠们进………………
#include <stdio.h>
#define PCHAR char*
typedef int int32;

int main()
{
    int32 n=5;
    PCHAR p3,p4;
        //p3='b';   这句话不能通过编译
    p4='a';  //这句是可以通过编译的
    p3=(char*)&n;
    printf("%d,%c\n",*p3,p4);
        return 0;
}

上面一个程序我申请了一个宏PCHAR,我用这个宏声明了2个指针变量p3和p4,我想问的是宏声明前一个指针变量p3仍旧是char型指针变量,而后面的p4却变成char型变量,这是为什么???


------------------------------------------------------------------------我是分割线----------------------------------------------------------------------


下面的是书上留下的题目,问是那些是对的,那些是错的,我有些“晕”,大家如很无聊的话麻烦您也做一遍,我也可以对下我做的答案,谢谢了!!!最好能写出为什么是错的!谢谢了

#define a int[10]这句话的意思是将a作为int[10]的别名吗?typedef int a[10];这句是将a[10]作为int的别名吗?不能理解……假如你不是这样,那么用什么别名来代替int a[10]呢?a[10] a[10];那这句是不是声明了一个整型数组啊?搞不懂!麻烦您费心解释下!!!

请判断下面哪些定义正确,哪些定义不正确。另外,int[10]和a[10]到底该怎么用
1),#define a int[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

2), typedef int a[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

3),#define a int*[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

4), typedef int * a[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

5),#define *a int[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

6), typedef int (* a)[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

7),#define *a * int[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

8), typedef int * (* a)[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;

[ 本帖最后由 a632034079 于 2010-9-1 17:03 编辑 ]
搜索更多相关主题的帖子: include return 
2010-09-01 16:52
okboy
Rank: 1
来 自:四川
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-8-29
收藏
得分:5 
你这样写只声明了P3
2010-09-01 18:33
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
收藏
得分:0 
以下是引用okboy在2010-9-1 18:33:50的发言:

你这样写只声明了P3


能详细点吗
2010-09-01 19:01
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
收藏
得分:0 
meiren     huei da ma
2010-09-02 07:02
ragnaros
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:15
专家分:105
注 册:2010-7-26
收藏
得分:10 
PCHAR p3,p4;
这条语句中PCHAR代表char *,所以你定义的是 char *p3, p4; 声明的char型指针变量只有p3, 而p4还是char型变量吧。
2010-09-02 09:12
yjg19841211
Rank: 2
等 级:论坛游民
帖 子:39
专家分:41
注 册:2008-5-18
收藏
得分:5 
5楼正确的吧,宏只进行文本替换,所以PCHAR会被替换成 char *
你的声明会变成  char *p3,p4.

2010-09-02 09:19
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
收藏
得分:0 
回复 5楼 ragnaros
谢谢了!

今天看了下书才明白过来
2010-09-02 16:44
快速回复:有2个问题请教下,大侠们进………………
数据加载中...
 
   



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

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