woaitudi 发表于 2008-4-22 09:01

typedef的问题

#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,想不明白。请解释一下这个程序吧!谢谢!

sunkaidong 发表于 2008-4-22 10:02

有什么不明白的就是一个指向int型数组的指针...

[[it] 本帖最后由 sunkaidong 于 2008-4-22 12:35 编辑 [/it]]

aipb2007 发表于 2008-4-22 12:29

typedef int int_array[4];

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

所以
int_array *p=array 等价于 int (*p)[4] = array

woaitudi 发表于 2008-4-22 15:17

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

aipb2007 发表于 2008-4-22 15:29

[quote][bo]以下是引用 [un]woaitudi[/un] 在 2008-4-22 15:17 的发言:[/bo]

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

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

最后再看我上面的回答。

woaitudi 发表于 2008-4-23 14:29

恩   是的   是C++ Primer 上的    谢谢!!

wangwangwei 发表于 2008-4-24 17:43

C++primer这书不错   多看看别的书哪有不懂的

页: [1]

编程论坛