Re: [问题]初学指标/函数指标的问题

楼主: Lipraxde (Lipraxde)   2017-08-14 23:46:15
※ 引述《idleryan (QQ)》之铭言:
: 我大概了解我想问的问题在哪里了
: http://codepad.org/46eNrl23
: 在Code第35行,如果我的Func直接回传一个矩阵,我不能直接以*Func(int)去读回传的矩阵
: 那请问我是否要再另开一个ptr去接Func的回传矩阵再print out呢?
你的Func1从回传int**改成回传int了,你读的时候就不能用原本的方法读了。
不知道你有没有学过typedef,一般在宣告指标、函数指标的时候我会喜欢用typedef,这
样比较好理解。用法:
typedef int typFunc(int, int);
typFunc *Func1;
// 跟int (*Func1)(int, int);一样意思
我想书本上题目的Func1、Func2想达成的目的是让你传入row、col两个参数,在里面透过
计算来得出矩阵的值,用code来写的话:
// 原本用二维矩阵的写法,读取时用 M1[row][col]
int M1[2][3] = {{1,2,3},{4,5,6}};
// 用函数改写,读取时改用 Func1(row, col)
int Func1(int r, int c)
{
return 1*(c+r*COL+1);
}
原本用二维矩阵写的话会占用内存空间,用函数改写后平常是不占用内存的,当你有
需要的时候传row、col进去,Func1临时算出来给你,省了内存空间,不过在读的时候就
要付出些计算量。
那Sum里该做什么事?Sum利用函数指标接收到Func1、Func2,在里面呼叫Func1、Func2把要
相加的值计算出来。
最后附上我写的解答,真的想不出来就参考看看吧,注解应该是打得蛮详细的了。
http://codepad.org/qGBHBC61
作者: idleryan (QQ)   2017-08-15 09:39:00
谢谢L大的解释,这样Func回传单一Int,靠外面的loop变成矩阵,这样就不用回传矩阵了

Links booklink

Contact Us: admin [ a t ] ucptt.com