注册 登录
编程论坛 C++教室

typedef的问题

woaitudi 发布于 2008-04-22 09:01, 886 次点击
#include <iostream>
using namespace std;
int main()
{const size_t array_size1=3;
const size_t array_size2=4;
int array[array_size1][array_size2]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
typedef int int_array[4];
for (int_array *p=array;p!=array+3;++p)
{   for (int *q=*p;q!=*p+4;++q)
       {cout<<*q<<endl;
       }
}
return 0;
}
typedef是用来定义类型的同义词的,上述程序就是将int_array[4]定义为int的同义词。但是for语句中的第一句用了一个int_array,想不明白。请解释一下这个程序吧!谢谢!
6 回复
#2
sunkaidong2008-04-22 10:02
有什么不明白的就是一个指向int型数组的指针...

[[it] 本帖最后由 sunkaidong 于 2008-4-22 12:35 编辑 [/it]]
#3
aipb20072008-04-22 12:29
typedef int int_array[4];

别曲解了这句话,typedef定义了一个int_array指向一个int数组,这个数组含有4个元素。

所以
int_array *p=array 等价于 int (*p)[4] = array
#4
woaitudi2008-04-22 15:17
可是在typedef int int_array[4]中,int_array[4]不是int 的同义词吗?一个指针和一个int型是等价的吗?
#5
aipb20072008-04-22 15:29
[bo]以下是引用 [un]woaitudi[/un] 在 2008-4-22 15:17 的发言:[/bo]

可是在typedef int int_array[4]中,int_array[4]不是int 的同义词吗?一个指针和一个int型是等价的吗?


我猜你这段代码是在c++ primer上的吧。
把指针与数组这部分使劲读几编,再不明白说明你不适合看这本书,换本浅显点的例如c++ primer plus

最后再看我上面的回答。
#6
woaitudi2008-04-23 14:29
恩   是的   是C++ Primer 上的    谢谢!!
#7
wangwangwei2008-04-24 17:43
C++primer这书不错   多看看别的书哪有不懂的
1