二级指针怎么用,帮忙修改简单的程序
程序要求要用二维数组指针计算出数组中各个元素的和.
我打算用一级指针指向数组,程序有错帮忙改下,谢谢!
有哪位高手能写出用二级指针加二维数组计算出各个元素的和,我要的是二级指针,谢谢!
#include <iostream>
using namespace std;
int main()
{
int *p[5][5];
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
cin>>(*(*(p+i)+j));
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cin>>*(*(p+i)+j)>>endl;
int sum=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
sum=sum+(*(*(p+i)+j));
cout<<sum<<endl;
return 0;
}
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<iostream.h>
void main()
{
while(1){
int n,m;
cin>>n>>m;
int **p;
p=new int*[n];
for(int i=0;i<n;i++)
*(p+i)=new int [m];
for( i=0;i<n;i++)
for(int j=0;j<m;j++)
{
int a;
cin>>a;
*(*(p+i)+j)=a;
}
int Sum=0;
for( i=0;i<n;i++)
for(int j=0;j<m;j++)
{
Sum+=*(*(p+i)+j);
}
cout<<Sum<<endl;
for( i=0;i<n;i++)
delete []p[i];
delete []p;
}
}
[解决办法]
二维指针不就是二维的数组了
只是表现的方式不一样。取值都一样
一个a[][]
一个**a
1楼的不就可以了
[解决办法]
int a;
int *ip = &a;
int **ipp = &ip;
ipp(=&ip)
*ipp(=ip=&a)
**ipp(=*ip=a)
这下LZ总明白了吧
[解决办法]
#include<iostream>using namespace std;int main(){int p[5][5];int i,j;for(i=0;i <5;i++)for(j=0;j <5;j++) cin>>(*(*(p+i)+j));for(i=0;i <5;i++) for(j=0;j <5;j++) cin>>*(*(p+i)+j);int sum=0;for(i=0;i <5;i++) for(j=0;j <5;j++) sum=sum+(*(*(p+i)+j)); cout <<sum <<endl;return 0;}
[解决办法]
#include <iostream> using namespace std; int main() { int p[2][5]; int i,j; //用s1和s2得到每一维的大小,那么当定义不同大小的二维数组p时可以不修改后面的代码 int s1=sizeof(p)/sizeof(p[0]);//二维数组p是由s1个一维数组组成 int s2=sizeof(p[0])/sizeof(p[0][0]);//每个一维数组有s2个元素 for(i=0;i <s1;i++) // { for(j=0;j <s2;j++) cin>>(*(*(p+i)+j)); } for(i=0;i <s1;i++) { for(j=0;j <s2;j++) cout <<*(*(p+i)+j) <<"\t"; } int sum=0; for(i=0;i <s1;i++) { for(j=0;j <s2;j++) sum=sum+(*(*(p+i)+j)); } cout <<endl <<sum <<endl; ////////////////////////////// int ii,jj; int **x=new int* [s1];//二维数组p是由s1个一维数组组成,申请s1个指针空间存放这些一维数组的起始处 for( ii=0;ii<s1;++ii) { x[ii]=(int*)p+ii*s2;//s1个指针空间存放这些一维数组的起始处 } for(ii=0;ii<s1;++ii) { for(jj=0;jj<s2;++jj) { cout<<x[ii][jj]<<",";//经过上面的处理,用二级指针x访问数据可以象使用一个二维数组. } } cout<<endl; delete []x; return 0; }
[解决办法]
#include<iostream>using namespace std;int main(){int m,n,i,j; cout<<"m="; cin>>m; cout<<"n="; cin>>n; int** p; p=new int*[m]; for(i=0;i <m;i++) *(p+i)=new int[n]; for(i=0;i <m;i++)for(j=0;j <n;j++) cin>>(*(*(p+i)+j));int sum=0;for(i=0;i <m;i++) for(j=0;j <n;j++) sum=sum+(*(*(p+i)+j)); cout <<sum <<endl; for(i=0;i <m;i++) delete [] p[i]; delete [] p;return 0;}