关于多维数组及多级指针的程序,高手帮忙
给出条件
int *p,**k,**j;
int a[5],b[5][5],c[5][5][5];
p-> a,k-> b,j-> c
怎么编啊 高手帮下忙 我对多维数组和多级指针不太了解
顺便写下编写的意思啊
[解决办法]
int a[5],b[5][5],c[5][5][5];
int *p =a,**k=b,**j=&c[0];
估计这里j应该是***三维指针吧
比如
类型相符就可以了~
[解决办法]
你是不是想定义多维数组的指针?
#include <iostream>
using namespace std;
int main()
{
int *x,(*y)[5],(*z)[5][5];
int i,j,k;
int a[5],b[5][5],c[5][5][5];
for ( i=0;i <5;i++)
{
a[i]=i;
for ( j=0;j <5;j++)
{
b[i][j]=i*5+j;
for ( k=0;k <5;k++)
{
c[i][j][k]=i*25+j*5+k;
}
}
}
x=a;
y=b;
z=c;
for ( i=0;i <5;i++)
{
cout < <x[i] < < " ";
}
cout < <endl < <endl;
for ( i=0;i <5;i++)
{
for ( j=0;j <5;j++)
{
cout < <y[i][j] < < " ";
}
}
cout < <endl < <endl;
for ( i=0;i <5;i++)
{
for ( j=0;j <5;j++)
{
for ( k=0;k <5;k++)
{
cout < <z[i][j][k] < < " ";
}
}
}
cout < <endl;
return 0;
}
一个简单的方法,定义指针时忽略第一维
int *p 指向int a[.];
int (*p)[5]指向 int a[.][5]
int (*p)[5][5]指向 int a[.][5][5]
[解决办法]
void main()
{
int a[5],b[5][5],c[5][5][5];
int *p;
int i,j,z;
p = NULL;
p = a;
for( i = 0 ; i < 5 ; i++)
{
*(p + i) = i;
printf( "%d ",*(p+i));
}
printf( "\n ");
p = b[0];
for( i = 0 ; i < 5; i++)
{
for( j = 0; j < 5; j++)
{
*(p + i*5 + j ) = i + j;
printf( "%d ",*(p + i*5 + j ));
}
printf( "\n ");
}
printf( "\n ");
p = c[0][0];
for( i = 0 ; i < 5; i++)
{
for( j = 0; j < 5; j++)
{
for( z = 0 ; z < 5 ; z++)
{
*(p + i*25 +j*5 + z) = i + j + z;
printf( "%d ",*(p + i*25 +j*5 + z));
}
printf( "\n ");
}
printf( "\n ");
}
printf( "\n ");
}
//多维指针一般是用在函数传递参数的时候。而一般情况下
//我们可以只用一级指针处理多维数组/的问题的,呵呵。
[解决办法]
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *x,(*y)[5],(*z)[5][5];
int i,j,k;
int a[5],b[5][5],c[5][5][5];
for ( i=0;i <5;i++)
{
a[i]=i;
for ( j=0;j <5;j++)
{
b[i][j]=i*5+j;
for ( k=0;k <5;k++)
{
c[i][j][k]=i*25+j*5+k;
}
}
}
x=a;
y=b;
z=c;
printf( "array x/a:\n ");
for ( i=0;i <5;i++)
{
printf( "%d ", x[i]);
}
printf( "\n\narray y/b:\n ");
for ( i=0;i <5;i++)
{
for ( j=0;j <5;j++)
{
printf( "%d ", y[i][j]);
}
printf( "\n ");
}
printf( "\n\narray z/c:\n ");
for ( i=0;i <5;i++)
{
for ( j=0;j <5;j++)
{
for ( k=0;k <5;k++)
{
printf( "%d ", z[i][j][k]);;
}
printf( "\n ");
}
printf( "\n ");
}
printf( "\n ");
return 0;
}