此代码在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;
}
答案 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;