jason_sk8erboy 发表于 2017-12-22 12:13:44

新人求助,函数指针问题

#include <stdio.h>

int main()
{
      double score = {{60.0, 70.0, 80.5, 90.5}, {56.0, 89.0, 67.0, 88.0}, {34.2, 78.5, 90.5, 66.0}};
      double *search(double *pointer, int n);
      int num,i;
      double *p,*e;
      printf("please enter in ······");
      scanf("%d",&num);
      p=search(score,num);//为什么说不能将double (*)【4】转换为double *,应该怎么改呢
      for(i=0;i<4;i++){
          printf("%2.1f ",*(p+i));
      }
      printf("\n");
}
double *search(double *pointer, int n){
    double *pt;

      pt = *(pointer + 4*n);

      return pt;
}

BngThea 发表于 2017-12-22 12:18:19

函数定义的是一个double指针,你传入了一个double二维数组当然不行

jason_sk8erboy 发表于 2017-12-22 12:28:14

BngThea 发表于 2017-12-22 12:18
函数定义的是一个double指针,你传入了一个double二维数组当然不行

不是说会转换成数组首个数字的地址吗?

BngThea 发表于 2017-12-22 12:50:08

jason_sk8erboy 发表于 2017-12-22 12:28
不是说会转换成数组首个数字的地址吗?

那是一维数组,二维数组名其实是一个指向数组的指针,而不是指向数据的指针

爱晴海 发表于 2017-12-22 13:13:31

pt = *(pointer + 4*n);》》》
pt = &(pointer + 4*n);

sp1ral 发表于 2017-12-22 16:41:19

score这个是代表的二维数组的首地址
但是要索引二维数组中的元素是不能按一维数组的方法索引

sp1ral 发表于 2017-12-22 17:26:39

爱晴海 发表于 2017-12-22 13:13
pt = *(pointer + 4*n);》》》
pt = &(pointer + 4*n);

pt = *(pointer + 4*n);》》》
pt = pointer + 4*n;
应该是这样pointer+4*n其实就是取score,score,score的地址

爱晴海 发表于 2017-12-23 14:07:12

sp1ral 发表于 2017-12-22 17:26
pt = *(pointer + 4*n);》》》
pt = pointer + 4*n;
应该是这样pointer+4*n其实就是取score,s ...

好像加不加&都可以啊
页: [1]
查看完整版本: 新人求助,函数指针问题