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

新手问问题!!

woaitudi 发布于 2008-03-28 17:46, 879 次点击
#include <iostream>
using namespace std;
int main()
{const size_t rowsize=3;
const size_t colsize=4;
int ia[rowsize][colsize]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
    for (int (*p)[4]=ia;p!=ia+3;++p)
        for(int *q=*p;q!=*p+4;++q)
            cout<<*q<<endl;
        return 0;
}
这个程序在运行时出现很多错误!但是将它改为
#include <iostream>
using namespace std;
int main()
{const size_t rowsize=3;
const size_t colsize=4;
int ia[rowsize][colsize]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
int (*p)[4]=ia;
    for (;p!=ia+3;++p)
        for(int *q=*p;q!=*p+4;++q)
            cout<<*q<<endl;
        return 0;
程序就没问题了 。我只是将int (*p)[4]=ia;从for语句中的里面拿到了外面.但是我觉得这两个程序一样!我想不出原因,请大家解释一下!!谢谢!!
8 回复
#2
zjl1382008-03-28 17:57
楼主是不是想输出一个二维数组,你二个程序都一样,怎么可能第一个有错而第二个没错。是不是你自已搞错了,你用什么编译器?
#3
aipb20072008-03-28 18:22
试了一下,dev-cpp通过
编译器问题,vc6.0不好。
#4
sunkaidong2008-03-28 18:42
恩..放在外面就没问题了..语法是对的...
#5
woaitudi2008-03-28 20:21
回复 2# 的帖子
我用的是VC 6.0    这个程序是编译器的问题吗?
#6
野比2008-03-28 23:17
两个程序的确是一样的,可能是编译器问题,我机器上现在没有C编译器,看不了
#7
a198705022008-03-29 11:53
难道VC6的编译器对作用域的辨别问题?
#8
a198705022008-03-29 11:56
问个小白问题:const size_t rowsize=3中的size_t是一中数据类型?自定义的吗?
#9
aipb20072008-03-29 13:07
typedef unsigned int size_t
1