[C语言里的指针是什么意思起什么作用]1:指针是一个地址,指向的是个类型: 我们知道,c语言中的类型有int,char,bool(这个不常用),一般我们使用int,char就可以满足一般的类型需求的,如果对于变量的长度过大,就是用long ,floa...+阅读
指针的作用:
1、指针就是指向一个特定内存地址的一个变量。c语言指针可以有效地表示复杂的数据结构、动态分配内存、高效地使用数组和字符串、使得调用函数时得到多个返回值等。指针的应用往往与数组联系在一起,是最频繁的,也是最基础的。在定义数组和函数时,系统都会为其自动分配一个指向其首地址的指针。对于一个数组,其名称就是一个指针变量。
2、指针只是一个变量,它存储一个内存地址。如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程。
3、指针能够有效的表示数据结构,能动态分配内存,能较方便的使用字符串,有效的使用数组。
4、指针直接与数据等的储存地址有关,是比较重要的。比如,值传递不如地址传递高效,因为值传递先从实参的地址中提出值,再赋值给形参带入函数计算;而指针则把形参的地址直接指向实参地址,使用时直接提出数据,使效率提高,特别在频繁赋值等情况下。
求解释c语言函数指针的作用
上面的话是有道理的。只是,要真的体会这些名词,需要你亲历躬行,一个“”是很难让你真正体会并理解的。国人一些教科书也不负责任,人云亦云的说这些话,但很少能透彻讲解。我小试一下。1. 便于分层设计:函数指针是引用,是间接层,或曰隔离层。它输出到上层,给上层用户用。函数实体是实现,在下层,给开发者用,实现者(软件工程师)关注。这就是简单的分层的概念了。上层用户想让一个函数所做的东西会变化时,我们只需要改变底层实现,并用函数指针指向新的实现就行了。再精炼一下分层:分层的核心是对接口进行设计和实现。函数指针的作用就是提供不同实现的统一接口。2. 利于系统抽象:只有存在多个类似的实体需要模拟、操作或控制时(这种情况很多)才需要抽象。
多个类似的实体就是对象,抽象的结果就是类。在C里边,可以用函数指针数组完成这种抽象。如, fopen 就是一个例子。他可以打开文件。C里面将磁盘文件、串口、USB等诸多设备抽象为文件。3. 降低耦合度以及使接口与实现分开:第1条中的解释已经说明了这一点。再具体一下:我曾搭建过一个嵌入式平台。其中的设备操作(硬件驱动)采用了多组函数指针数据,并进行了简单的封装,其结果是:业务软件使用函数指针数组的封装函数访问设备。这个封装可展示为:int DevOpen(char *strDevName);int Write(int DevID, char* DataFrom, int StartDevAddr, int DataLong);int Read(int DevID, char* DataTo, int StartDevAddr, int DataLong);int DevClose(int DevID);这组抽象出来的函数,是一组语义清晰且稳定的上层接口,为上层的业务开发团队使用。
底层的驱动层,各自实现自己的设备打开、读、写及关闭代码,然后,注册自己的设备到系统列表里。上层业务接可以使用了。期间的耦合在这里:int Write(int DevID, char* DataFrom, int StartDevAddr, int DataLong){ /* Error detecting. */ return DevWrite[ DevID ]( char* DataFrom, int StartDevAddr, int DataLong );}其中,DevWrite[ DevID ]就是一个函数指针数组:int (*DevWrite)[ MAX_DEV_NUM ]( char*,int,int ) = {0};里面放的就是多个设备的写的操作。其中包括:UART,RTC,WatchDog。EEPROM,DigitalInput,DigitalOutput,Key,LCD,LED。好了。说的太多了。如需要学习,可邮件livefuture163.com。但愿对你有所帮助。
以下为关联文档:
C语言中指针的意思是什么?FAR指针又是什么指针是一个特殊的变量,它里面存储的数值被解释成为内存中的一个地址。要弄清一个指针的含义,需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所...
C语言指针基本概念及其指针变量的定义是什么我们知道变量e79fa5e98193e59b9ee7ad9431333332633039在计算机内是占有一块存贮区域的,变量的值就存放在这块区域之中, 在计算机内部, 通过访问或修改这块区域的内容来访问或修...
C语言函数指针的调用问题?函数指针怎么用有函数: int fun(int a,int b); 要定义指向该函数的指针 对比指向 int a; 的指针 int *p; p = &a; p的定义是怎么来的? 首先要保证p是一个指针类型 写下(*p), 然后,考虑下p的基类...
C语言中的指针是什么意思指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免...
C语言中的指针是什么!详细说明!指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地...
什么是招贴作用是什么招贴按其字义解释,“招”是指引注意,“贴”是张贴,即为“招引注意而进行张贴”。招贴的英文名字叫“poster”,在牛津英语词典里意指展示于公共场所的告示(Placard displayed in a...
C语言中的指针是什么详细说明指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地...
c语言中指向指针的指针#include<stdio.h> #include<stdlib.h> #define M 3 #define N 3 void main() { void add(int **a,int **b,int **c,int rows,int cols); int i,j; int a[M][N],b[M][N],c[M...
c语言指针:a为二维数组那a0是什么类型?是指针还是数组在二维数组a中,a[0][0]是第一行的第一个元素, a[0]则是指向第一行第一个元素的指针即a[0] = &a[0][0]; a是数组名,也是指向第一行的第一个元素的指针所以a = &a[0][0]; 至于 a...