标题c语言中为什么要使用函数指针,直接调用函数不就可以吗?
函数的调用必须是已知文件名的。如果你写一个系统的某一层,不知道其他层的内部情况,这时候用指针传递函数最合适。还有,结构体里包含指向函数的指针,就相当于一个简单的“对象”了。
看看linux内核里各接口的定义。函数指针的使用使的内核可以很多人同时开发,并且大家只需要知道相应的接口就可以了。这套框架,离不开函数指针。
代码的运行是自上到下的。如果你的函数在被调用的地方的上面。那么你就可以不需要声明。反之,如果你的函数在调用处的下面。那么你必须要声明,不然你的程序没法调用函数
函数指针一般用来做回调的,一般多线程用的多,因为线程之间,栈空间不一样。还有就是封装好的程序,做回调的,比如我写了一段程序,想要给你用,如果我内部没有回调,你就要改动我的程序。但我这样写,我的执行过程是123,二这个步骤,我用函数指针封装起来,如果等于空就不执行,然后你来用,只需要把我的函数指针,指向你的函数,我这个程序是不是就可以不改代码,然后把你的代码加到中间了,所以,函数指针除了线程中,通过传递消息,根据消息相互调用,之外,也是封装的一大利器,如果管理的好,还可以减少代码雍种,写的好,增加可读性。当然你可以不用,也能开发同样效果的东西,难度要大很多,特别是代码到千行以上为什么c语言中要加入main()函数啊?
在一个程序中,可以说你看不出两者的差别,因为main()是C语言的入口点,入口点如果返回了程序也就结束了,因此C语言的这个特性似乎没用。可没用的话,C语言的设计者为什么要这么做呢?!肯定有用。没错,前面我说的是在一个程序中,它似乎没用。可如果一个程序prog2调用另一个程序prog1的话(这...
C语言题目求解 20题中 为什么要先转换成二进制运算?位与运算是怎样算...
&是位运算符,a&b是二进制数对应位都是1则为1否则是0,a转换后是 1110 b转换后是 1111,前三位对应都是1,最后一位不都是1则为0,最终a@b=1110(二进制)=14(10进制)&&是逻辑运算符,两边都是真则为真否则为假,左边14是真(只有0是假)右边是真所以都是真 结果是1 ...
C语言中,下面一题B项为什么要r=s?
r=s;这句是更新队尾。因为新插入的s变成了新的队尾,而r要时刻指向队尾。
C语言问题,这里为什么要加10?
因为16进制的A表示10,B表示11,所以假定你的十六进制字符c内容是'A',那么 c-'A'为0,必须加上10才能表示c对应的十进制数字,结果为10,同样如果c的内容是'B',那么同样c-'A'+10为11 至于小写字母的+10是一样的原理
C语言中为什么要使用指针访问数组元素?
用指针有一些好处:可以再指针上直接进行计算 比如加减指针。另外当数组作为参数传递到函数中的时候,用指针是很方便的。其实数组的名字就是一个指针。有一本经典的书 《C专家编程》 可以帮助理解这个问题。这种基础问题是非常重要的。参考资料:http:\/\/www.china-pub.com\/38005 ...
C语言的一道题目 为什么要换成指针,用变量a和b不行吗? 还有就
A: 首先,函数只能返回1个值,这里需要返回大小写的数量,是2个,所以不能用函数返回值的写法(当然也可以变通,比如定义一个结构包含a和b,函数返回一个结构)。其次,为什么不用变量?因为变量有作用域的问题,在fun函数中定义的a和b,在主函数中是没有意义的。综上,题中使用传地址(即指针)的...
为什么C语言中要用“ scanf”?
首先定义int i是没有问题要问的。之后用printf也是没有问题要问的,要问的是在printf之后。电脑执行到printf看到后面的scanf函数,便停了下了,等待用户输入。所以在一个C语言程序里,有scanf函数就要停下来等待用户输入。但是用户输入完后要怎么跟电脑说:”我输入完了“?就是用scanf函数本身要按回车键...
C语言问题,宏定义中的参数为什么要定义,不是主函数中的参数直接替换吗...
首先你要理解什么是预处理命令#define。它的作用是:在编译之前,对#define的参数在作用范围内进行替换操作。如:define A 2 int b = A; \/\/ 在编译之前,这行代码会被替换成: int b = 2;所以#define只是替换,可没有定义相关的参数。用这道题来举个例子:define JH(a, b, t) t=a; ...
c语言问题,为什么链表操作过程中对于结构体指针,都要用malloc来开辟内存...
定义的结构体指针只是说明这个指针是指向这个结构的,但并未给它分配内存空间,这就类似于声明,只是告诉系统我这个指针是干什么用的。链表是由一个个的结点链接起来的,而每个结点都是需要内存空间来存储数据的,所以你每新建一个结点,都需要开辟一个空间来存储数据。希望对你有用~...
在求3到100之间的素数的c语言题中,有一步是要开平方,是为什么?
这是为了提高效率,减少判断次数。按定义,要判定数n是一个素数,要确定n不能被2~n-1整除。事实上,若n能被2~n-1中的某个整数k整除,则它必定能被整数(n\/k)整除。如果k与(n\/k)不相等,则其中必有一个小于√n;如果k与(n\/k)相等,则必有k=√n。所以只要检查2~√n,就可确定n是否...
啜皆高喜: 函数名,其实在汇编一级是地址,指针里存得也是地址,两者没啥区别,但在我们编译的时候,由于编译器要对参数进行类型检查,所以直接调用函数用起来比较方便,而指针这需要定义成指向函数的指针,才能通过编译器的类型检查.为什么要用指针?有许多的WINDOWS API是回调函数,需要函数指针.
景县13328823551: 求解释c语言函数指针的作用 - ?
啜皆高喜: 你上面那一段话,对于初学者来说确实坑爹,说的像什么官方话语,我看着也就只能理解个模糊大概. 先给你举个例子吧,函数指针的写法 int *p; int a; p=&a; //这是一般整型指针 #include <iostream> using namespace std; int arr(int a,int b){...
景县13328823551: c语言中函数指针是什么 有什么用 举个实例 - ?
啜皆高喜: 函数指针是指向函数的指针变量. 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数.函数指针有两个用途:调用函数和做函数的参数.函数指针的...
景县13328823551: 在C语言中什么是指针?指针是干什么用的?,有什么意义? - ?
啜皆高喜: 写简单的程序的话不用指针也行了吧. 比如, int a = 2; int* p = &a; *p = 3; 这里a是一个地址(编译后), 为了读写这个地址单元里的东西,可以用p,也可以用一般变量a. 对于指针的便利,我现在能想到的,可能是: 函数A调用函数B时,把一...
景县13328823551: C语言中指针在编程中有什么作用? - ?
啜皆高喜: 指针,太有用了,也最难管理的,好处多的是,比如,函数传递,参数是结构时,传指针可以提高性能
景县13328823551: c语言的指针的用处,请祥细解答.?
啜皆高喜: C里面函数都只能返回一个值,如果你的函数要返回两个值,那就要用指针了,把变量地址传进函数,然后把希望通过函数操作后想要的值存进传进来的变量地址里面.当然函数可以返回数组,结构体,但是你看多了你就知道,没有人会这么做的,都返回指针.试想如果我有一个1万个元素的数组,你会把它整个地传进一个函数里面或者整个地返回出来吗?C语言里面都是传值的,就是说传进函数的参数值首先被复制一边赋值给形式参数,你想想1万个元素,够呛咯!但是有指针就好多了,我们可以把指针(数组的第一个元素的地址)传进函数里面,有了开始地址,函数就知
景县13328823551: C语言指针到底有什么用 - ?
啜皆高喜: 所谓指针就是一个地址,它必须初始化才能使用,所谓初始化就是要指向一个目标.它的作用是,比如你在main函数里定义了一个const int a = 100,如果你想改变a的值,那么一般的办法就行不通了,这个时候就能用到指针了,你定义一个指针指向a,然后通过指针对a的空间进行操作达到改变a的目的.当然一般人是不会这样干的,这里只是为了说明指针的一个作用而已,指针能帮助你完成一些复杂的计算,用处很大.
景县13328823551: C语言中为什么要使用指针访问数组元素? - ?
啜皆高喜: 用指针有一些好处:可以再指针上直接进行计算 比如加减指针.另外当数组作为参数传递到函数中的时候,用指针是很方便的.其实数组的名字就是一个指针.有一本经典的书 《C专家...
景县13328823551: c语言中用指针变量调用函数有什么意义? - ?
啜皆高喜: 直接用函数当然更清晰,某些特殊情况下用指针变量实现功能比较方便
景县13328823551: 我是c语言初学者!我想请教下!在c语言中为什么要引入指针这个概念!它的微妙之处在哪里?有大神帮我分 - ?
啜皆高喜: 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍.为了正确地访问这些内存单元,必...