在C ++中声明指向2-D数组内的1-D数组的指针

时间:2014-09-24 03:54:41

标签: c++ pointers

此代码在C中运行良好,但在C ++中运行不正常。有人可以告诉如何将指针传递给二维数组内的一维数组吗?

    #include<iostream>
    #include<stdio.h>
    int main(){
              int s[5][2]={ 
                          {0,1},   
                          {2,3},
                          {4,5},
                          {6,7},
                          {8,9}   
                };
        }

    int (*p)[2];
    int i,j,*pointer;

       for(i=0;i<=4;i++){
             p=&s[i];

如果我在C.Its中正常工作时删除(int *),并且不能将int()[2]转换为(int ),则该行会生成错误。

             pointer=(int*)p;
             printf("\n");

       for(j=0;j<=1;j++)
       {
             printf("%d\t",*(pointer+j));
       }
    return 0;
    }

1 个答案:

答案 0 :(得分:0)

如果要添加错过的右括号,则代码会成功编译(在www.ideone.com上)

#include <cstdio>

int main() 
{
    int s[5][2] = 
    { 
        { 0, 1 },
        { 2, 3 },
        { 4, 5 },
        { 6, 7 },
        { 8, 9 }
    };

    int ( *p )[2];  
    int i, j, *pointer;

    for( i = 0; i <= 4; i++ )
    {
        p = &s[i];
        pointer = (int*)p;
        printf( "\n" );

        for ( j = 0; j <= 1; j++ )
        {
            printf( "%d\t", *( pointer + j ) );
        }
    }

    return 0;
}

输出

0   1   
2   3   
4   5   
6   7   
8   9

考虑到编写

会更好
pointer = *p;

而不是

pointer = (int*)p;