有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 编辑 ]