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

一道指针题目,该怎么处理

2012-04-08 
一道指针题目定义一个整形二维数组并初始化,求该数组所有元素的和。要求分别用数组下表法,一级指针法,二级

一道指针题目
定义一个整形二维数组并初始化,求该数组所有元素的和。要求分别用数组下表法,一级指针法,二级指针法实现。
我的代码如下,看下哪里有错,并且时不时符合后面的要求,我怕我没有理解它的要求:
#include <stdio.h>


int array_sum(int (*arr)[2]);
int point1(int *p);
int point2(int (*p)[2]);

int main()
{
int a[3][2]={{1,2},{3,4},{5,6}};
int sum=0;

sum=array_sum(a);
printf("用数组法和为%d\n",sum);

sum=point1(a[0]);
printf("用一级指针法和为%d\n",sum);

sum=point2(a);//编译器提示这里有错 
printf("用二级指针法和为%d\n",sum);

return 1;
}

int array_sum(int (*arr)[2])
{
int i,j,sum=0;

for(i=0;i<3;i++)
for(j=0;j<2;j++)
sum+=arr[i][j];
return sum;
}

int point1(int *p)
{
int i,sum=0;

for(i=0;i<6;i++)
sum+=*p++;
return sum;
}

int point2(int (*p)[2])
{
int i,sum=0;

for(i=0;i<6;i++)
sum+=**p++;
return sum;
}

[解决办法]

C/C++ code
#include <stdio.h>int array_sum(int (*arr)[2]);int point1(int *p);int point2(int (*p)[2]);int main(){    int a[3][2]={{1,2},{4,4},{5,6}};    int sum=0;        sum=array_sum(a);    printf("用数组法和为%d\n",sum);        sum=point1(a[0]);    printf("用一级指针法和为%d\n",sum);        sum=point2(a);    //编译器提示这里有错      printf("用二级指针法和为%d\n",sum);        return 1;}int array_sum(int (*arr)[2]){    int i,j,sum=0;        for(i=0;i<3;i++)        for(j=0;j<2;j++)            sum+=arr[i][j];        return sum;}int point1(int *p){    int i,sum=0;        for(i=0;i<6;i++)        sum+=*p++;    return sum;}int point2(int (*p)[2]){    int i,sum=0,j;        for(i=0;i<3;i++)        for(j=0;j<2;j++)            sum+=*(*(p+i)+j);    return sum;} 

热点排行