首页

文章

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

发布网友 发布时间:2022-02-28 13:53

我来回答

6个回答

热心网友 时间:2022-02-28 15:22

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

在没有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);   

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

热心网友 时间:2022-02-28 16:40

很多情况可以用到。这需要在编程过程中形成一种思维。
如 将一个结构体传递给一个函数。
如果不用指针,传送速度慢,如果通过指针,只要传递一个地址。
struct example
{
int i;
int j;
int f;
char a[1024];
};
void main()
{
struct example ex;
fun(&ex);//将结构体ex的地址传递给函数fun
}
fun(struct example *p)
{
}

热心网友 时间:2022-02-28 18:15

指针通过地址传递参数,可以双向传递值。
如果你是计算机专业的学生,看《高级语言程序设计》里面有详细介绍二者的区别,也有程序对比(两数交换的函数)。我比较懒,你就靠自己了。

热心网友 时间:2022-02-28 20:06

C语言中就指针最难,指针主要是处理地址不像数组那样挨着好找的情况,把下一个数的地址给上一个保管,才能一个接着一个找到。不过我觉得很烦了,最好还是学java,高级的,更符合人

热心网友 时间:2022-02-28 22:14

指针是C语言的精华,不会指针,相当于C语言根本没学明白!等你到嵌入式系统的编写 或者 上位机APP的程序编写的时候就知道了 C语言说到底是一种交流语言 类似于英语一样

热心网友 时间:2022-03-01 00:39

const unsigned int VOICE_TYPE_0[]={0xFFFF};
const unsigned int VOICE_TYPE_1[]={0xFFFF};
const unsigned int VOICE_TYPE_2[]={0xFFFF};
const unsigned int VOICE_TYPE_3[]={0xFFFF};
const unsigned int VOICE_TYPE_4[]={0xFFFF};
const unsigned int VOICE_TYPE_5[]={0xFFFF};
const unsigned int VOICE_TYPE_6[]={0xFFFF};
const unsigned int VOICE_TYPE_7[]={0xFFFF};

const unsigned int *VOICE_POINT[]=
{
VOICE_TYPE_0,
VOICE_TYPE_1,
VOICE_TYPE_2,
VOICE_TYPE_3,
VOICE_TYPE_4,
VOICE_TYPE_5,
VOICE_TYPE_6,
VOICE_TYPE_7
};
/******************************************************************************/
voice_delay=VOICE_POINT[voice_type][voice_status];
不使用指针。
程序太长了。
用一个
switch(voice_type)
{
case 0:voice_delay= VOICE_TYPE_0[voice_status];break;
case 1:voice_delay= VOICE_TYPE_1[voice_status];break;
case 2:voice_delay= VOICE_TYPE_2[voice_status];break;
......

}
谷歌浏览器怎么设置成中文_谷歌浏览器设置中文语言 【谷歌浏览器技巧】谷歌浏览器如何更改语言? 史上最全ETF全解 证券ETF是深市的吗 怎样把莲藕肉丸子做的好吃? 高三语文小说赏析小说形象分析与答题技巧 人物形象题答题技巧 借助什么分析小说的人物形象 脖子旁边疼是什么原因 在群里不是好友怎么把群里人建另一个群 蛇床子的药理作用 炒蛇床子和生蛇床子有什么区别 为什么把床头垫高点 为什么床头高点儿 为什么要给新生儿抬高床头 人脸识别打卡考勤机找哪家? 背后搞你的人什么心态 很皮的搞笑撩人句子高情商的撩人句子(82句) 恶搞爱情短信 床头挂什么财运最旺最好 床上放什么东西辟邪 道家床头挂什么画最好最旺 床头贴什么最好最旺道家 建设工程竣工后,是否必须取得《规划验收许可证》? 环评竣工验收 手机几年没用了开不了机怎么办 红烧啤酒鸡的家常做法大全怎么做好 双男主泰剧新剧推荐 2019泰剧《爱情理论》小受暗恋花心直男好友 液体卫生巾和普通卫生巾的区别是什么?液体卫生巾的优点 可水洗粘尘垫哪家好 电脑12g够用吗? 宝宝双侧肺炎病变严重吗 什么是洁净气体灭火器 2024年实用父亲节礼物推荐有哪些?(2300字选购指南) 40包速溶咖啡比对 作文请以“这样挺好”为题,写一篇记叙文或议论文,不少于800字。要求... 如何写好作文我就是这么好 惊魂未定什么意思?有什么典故? 安阳火车站到新师院北门的公交车有哪些? 安阳市公交车26从火车站发车多长时间到终点站 太仓汽车站去太仓乐遥浏河公墓坐几路公交 请问廉江市哪里有奥克斯手机专业维修店,急!! 梅赛德斯奔驰E350敞篷版的整体简介及其性能如何 员工出差前需要做什么准备工作? 用(祝愿自己生日快乐)写首藏头诗,希望有才华的人帮帮忙,谢谢了_百度... 请问做爱前吃什么药可以延长做爱时间? 我每天锻炼,然后吃什么,能延长我房事时间?现在两分钟,双方都苦恼。_百 ... 做爱前吃什么最能滋补身体 吃什么能让房事时间长些? C语言中指针是什么 C语言中指针有哪些用处。或者可以用来做什么,请简单举例说明 C语言中的指针有什么意义? 怎么才能把对方的注销 手机号申请的如何注销 c语言编译器是用什么语言编写的 怎么把注销了 不是退出 是让他彻底消失 现在学习C语言,编译器都用什么啊? 不要了怎么注销 怎么注销别人? 现在C语言一般都用的什么编译软件? 如何注销本人另外的? 微软用什么C语言编译器 可以注销么?用手机号注册的怎么注销啊? 有哪些比较好用的c语言编译器 不想玩微信了,怎样才能注销? C语言二级用什么编译器好? 怎么注销 c语言代码用哪个编译器都不能编译了 C语言用什么编译器最好 C语言指针是什么? C语言中指针有什么特别的地方 在C语言中,exit(0)是什么意思? c语言中,exit(1)是什么意思?求助~ C语言中:函数exit(-1);与exit(0);的区别是什么?是返回值吗? C语言属于哪一类语言? 手机照片回收站清空了能恢复吗? C语言和C++语言的区别是什么? C语言语言中FOR的用法 C语言中的for语句 用法 急!c语言多个for语句的用法。 C语言for循环详细讲解 C语言中,for语句的用法? c语言中for语句是怎么用的? C语言中,for的使用问题? C语言for循环的使用和讲解有哪些? C语言和java语言的区别和联系? java 和c语言的主要区别在哪呢? java和c语言有什么区别和联系? Java和c语言的区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com