问个指针函数的问题~~

mdejtod 2007-05-25 04:46:03
float *view(pp,j);
float (pp)[2];
int j;
{
float *pt;
pt=pp+j;
return(pt);
}
main()
{
float source[][2]={{1.1,1.2},{1.3,1.4},{1.5,1.6}};
float *p;
int i,n=2;
printf("The record of No .%d are:\n",n);
p=view(source,n);
for(i=0;i<2;i++)
printf("5.2f\t",*(p+i));
}
输出的值应该是 1.5 1.6
可程序怎么会是 1.3 1.4 呢
...全文
279 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
contain_universe 2007-05-25
  • 打赏
  • 举报
回复
当局者迷,旁观者清
万物略同
呵呵
mdejtod 2007-05-25
  • 打赏
  • 举报
回复
谢谢各位。。。准备结贴。。。。
mdejtod 2007-05-25
  • 打赏
  • 举报
回复
我晕,这边定义有问题
float (pp)[2];
改成
float pp[][2];
就可以了
mdejtod 2007-05-25
  • 打赏
  • 举报
回复
呵呵。是Tc啊
float *view(pp,j);------>去掉;
打错了,程序里没有;这个的
照你意思来int i,n=2;---->这里把n改成n = 4看看。。
为什么呢? 为2表示第二行啊,改成4的话, 是输出1.5,1.6的啊
我试了下
n=0 1.0,1.1
n=1 1.1,1.3
n=2 1.3,1.4
n=3 1.4,1.5
n=4 1.5,1.6
这是怎么回事呢?我定义的明明是三行两列的数组啊
bargio_susie 2007-05-25
  • 打赏
  • 举报
回复
你用的哪国古老编译器?这样的定义函数也通过了。。。

float *view(pp,j);------>去掉;
printf("5.2f\t",*(p+i));-------->printf("%5.2f\t",*(p+i));

照你意思来int i,n=2;---->这里把n改成n = 4看看。。
mdejtod 2007-05-25
  • 打赏
  • 举报
回复
是啊,.返回的是一个指向数组的指针嘛,..再输出指定行(第2行)的元素
dai_weitao 2007-05-25
  • 打赏
  • 举报
回复
楼主说的是函数指针吧?
mdejtod 2007-05-25
  • 打赏
  • 举报
回复
float *view(pp,j);
float (pp)[2];
int j;
{
float *pt;
pt=pp+j;
return(pt);
}

接收的是一个二维数组,指针指向这个数组的第二行的首地址 pt=pp+j
可以编辑得过啊.返回指针的函数,这样的写法有什么问题吗?
zidane_yubo 2007-05-25
  • 打赏
  • 举报
回复
这程序能编译通过吗?
hailongchang 2007-05-25
  • 打赏
  • 举报
回复
//函数指针用法与typedef在函数指针方面的应用
//具体说明可以参考C程序设计 谭浩强 函数指针变量和typedef两小节


#include<stdio.h>

typedef void (*ptr)();
void fun()
{
printf("Hello World\n");
}

void call(ptr p)
{
(*p)();
}
int main()
{
//void (*p)();
ptr p;
p=fun;
call(p);
return 0;
}
prgmBaggio 2007-05-25
  • 打赏
  • 举报
回复
float *view(pp,j);
float (pp)[2];
int j;
{
float *pt;
pt=pp+j;
return(pt);
}

看不懂

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧