永发信息网

C指针问题,为什么需要指针?

答案:5  悬赏:20  手机版
解决时间 2021-04-03 15:39
  • 提问者网友:愿为果
  • 2021-04-02 15:14
C指针问题,为什么需要指针?
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-04-02 15:21
指针在你这个小程序能体现多大价值?
等需要高级点的数据结构,以及高级点的算法,就需要指针了。

谭浩强这题,是体现指向函数的指针的作用,用指针保存函数的地址,调用这个函数,可直接通过指针调用。

在QT,GTK之类的GUI库里,它们会提供一个函数,供开发者将 自定义函数 与指定事件关联;
因为 GUI库的开发者 不知道 使用者 是用什么函数,只有用个函数指针,保存 使用者 给的函数的地址,等事件触发后,通过该函数指针调用使用者的自定义函数。追问也就是说这里根本不需要指针是吧追答动态内存需要用到指针。
被调用的函数,要使传入的参数的值的变化能够作用在上级函数中,那么,需要指针保存该变量的地址,以对其操作。

小程序功能简单,又不需要考虑内存开销,用不了多少C语言高级点的功能。
全部回答
  • 1楼网友:怙棘
  • 2021-04-02 17:29
注意:练习函数指针作为参数的例题
那我问你:你不用指针,你现在能理解函数指针了吗?
要是你不学会用指针的话,那你没学会C语言。。。。
有时是必须要有指针的 否则你没法解决问题。。。。
道理就这么简单!
书中举例没问题!
  • 2楼网友:骨子里都是戏
  • 2021-04-02 17:18
纠结这干嘛,学程序的都知道谭浩强的书不好,他只是为了引出指针而已,指针的作用就在于指向地址,在后面链表啊,堆栈啊,队列啊,串啊都会很有用。纠结谭浩强书的每个字句都是在自找麻烦罢了.....
  • 3楼网友:千杯敬自由
  • 2021-04-02 17:07
年轻人,虽然我没看你的代码,你说不用指针代码更少,不错当然节省了空间,但是你想过用指针比不用指针速度快吗? 这其中的空间和时间关系是很微妙的。 这其实都不重要,重要的是,如果想精通C,想成为C高手,我劝你 以后写程序能用指针尽量用指针,数组能被指针代替的,尽量用指针,不是仅仅掌握了if while 等结构就行了的,,指针、结构体等才是C的精华。 比如 int *(*(*a)[5])(int *) ;你懂吗 、 二维数组 a[2][2]; a、*a、**a三者有什么区别, *a[1] (*a)[1]又有什么区别 当初我也自觉的会了if while 等结构,自信满满,,后来看了C和指针 这书后,自信被打得支离破碎,才知道自己多肤浅。
  • 4楼网友:我住北渡口
  • 2021-04-02 16:47
原先给的例子并不好。
例子如下:
#include
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
int min(int a,int b)
{
if(a else return b;
}
int add(int a,int b)
{
return a+b;
}
int (*pArr[])(int, int) = {&max, &min, &add}; // 创建一个函数指针数组来存上述函数
int fun(int x,int y,int (*p)(int,int))
{
return (*p)(x,y);
}
int main()
{
int a=13,b=22,n;
printf("please choose 1,2 or 3\n");
scanf("%d",&n);
//调用时不再需要判断n的值取调用哪个函数了,对应指针数组就可以了,方便了吧。
printf("%d",fun(a,b,pArr[n-1]));
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯