首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

二级指针如何用,帮忙修改简单的程序

2012-03-12 
二级指针怎么用,帮忙修改简单的程序程序要求要用二维数组指针计算出数组中各个元素的和.我打算用一级指针

二级指针怎么用,帮忙修改简单的程序
程序要求要用二维数组指针计算出数组中各个元素的和.
我打算用一级指针指向数组,程序有错帮忙改下,谢谢!

有哪位高手能写出用二级指针加二维数组计算出各个元素的和,我要的是二级指针,谢谢!
#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总明白了吧
[解决办法]

C/C++ code
#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;}
[解决办法]
C/C++ code
#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; }
[解决办法]
C/C++ code
#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;} 

热点排行
Bad Request.