这段代码在C语言中效果很好,但在C ++中效果不好。有人能告诉我如何在2-D数组中传递指向1-D数组的指针吗?
#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语言中正常工作时删除(int *),则此行会产生错误。它说无法将int()[2]转换为(int)。
pointer=(int*)p;
printf("\n");
for(j=0;j<=1;j++)
{
printf("%d\t",*(pointer+j));
}
return 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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句