c语言为什么要有指针呢?

c语言和c++为什么要有指针呢,能否写两段简单的程序来对比用指针和不用指针时解决问题的难易程度,和用指针后可能操作不当带来的问题。谢谢。邮箱2453316506@qq.c... c语言和c++为什么要有指针呢,能否写两段简单的程序来对比用指针和不用指针时解决问题的难易程度,和用指针后可能操作不当带来的问题。谢谢。邮箱2453316506@qq.com
希望用程序说话,体现在程序中让人一下就明白了。谢谢
期待最佳答案,拜托了,期待跟详细的解释。
展开
 我来答
小星星教育知识分享
高粉答主

2019-12-01 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67136

向TA提问 私信TA
展开全部

因为指针通过地址传递参数,如果不用指针传送速度慢。

在没有C++语言的年代,没有面向对象、模板的语法支持,struct中还不能定义函数,用C语言想要对业务功能(算法,此处即指函数)进行抽象,不想依赖具体的数据结构/数据类型,此时就必须用指向函数的指针来实现抽象与具体的分离,

该函数的入参可以是void*,这样调用者就可以传入任意类型的参数了。后来有了C++,就用类成员函数和泛型(模板+functor)来代替了,这样做有更强的静态类型检查机制和编程约束,有利于减少滥用风险。

函数指针的一个典型应用场合是实现回调,因为此时还不知道具体函数定义,事件发生时才调用、才确定;类比于面向对象中的“多态”+设计模式中的“观察者模式”,回调的实质仍然是抽象。

扩展资料

C语言程序开发中,数组指针是有其独特的作用的,它可以用于限制函数接收指针索引的内存长度,利用编译器规范程序项目。在定义数组指针时,利用C语言的typedef关键字常常能够使代码更加易读:

typedef int Vector3d[3];

void transform(Vector3d *vector);

/* equivalent to `void transform(int (*vector)[3])` */

...

Vector3d vec;

...

transform(&vec);   

参考资料来源:百度百科—指针

逸_公子
推荐于2017-11-26 · TA获得超过186个赞
知道答主
回答量:183
采纳率:0%
帮助的人:50.7万
展开全部
很多情况可以用到。这需要在编程过程中形成一种思维。
如 将一个结构体传递给一个函数。
如果不用指针,传送速度慢,如果通过指针,只要传递一个地址。
struct example
{
int i;
int j;
int f;
char a[1024];
};
void main()
{
struct example ex;
fun(&ex);//将结构体ex的地址传递给函数fun
}
fun(struct example *p)
{
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Wri2u
2013-09-03 · TA获得超过182个赞
知道答主
回答量:62
采纳率:0%
帮助的人:11.1万
展开全部
C语言中就指针最难,指针主要是处理地址不像数组那样挨着好找的情况,把下一个数的地址给上一个保管,才能一个接着一个找到。不过我觉得很烦了,最好还是学java,高级的,更符合人
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-03
展开全部
指针通过地址传递参数,可以双向传递值。
如果你是计算机专业的学生,看《高级语言程序设计》里面有详细介绍二者的区别,也有程序对比(两数交换的函数)。我比较懒,你就靠自己了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hobbye501
2013-09-03 · TA获得超过247个赞
知道小有建树答主
回答量:709
采纳率:100%
帮助的人:242万
展开全部
指针是C语言的精华,不会指针,相当于C语言根本没学明白!等你到嵌入式系统的编写 或者 上位机APP的程序编写的时候就知道了 C语言说到底是一种交流语言 类似于英语一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式