
正文
c语言通过指针执行函数 c语言指针指向
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言用指针作函数参数
选D
因为第一个
参数
是地址传递c语言通过指针执行函数,fun(b,a);中传入a
字符
。*c=*c+1将cc语言通过指针执行函数的值变为b字符。
主函数
的值改变。
第二个参数是值传递,所以在
函数
中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。
相关问答
Q1: 在C语言中,指向函数的指针怎么调用函数?
1楼感觉对函数指针不是很了解,就不评论了. 2楼的基本还可以,但是int (*p)(),然后让它指向max函数,一个包含两个未知量的函数,这在后来的标准c里面是不支持的好像. 3楼吧,那么多*,感觉有点不大对. *是取内容,连着那么* ,我没试过,没有多少意义至少.他11级了,应该也不会怎么有错,你可以试试(我不打算加那么多*, 就不调试了).
程序里面对函数的调用,就是通过函数的入口地址,然转入函数. 这样的话,函数指针的意义就明显了.函数指针指向了函数的入口,即函数指针里是函数的入口地址. 指针不能指向函数这种说法肯定是不对的.话说回来,1楼的老兄可能看错书了,或者记错了.
类型匹配很重要,二楼的声明和使用不一致,这在老版的编译器里也是支持的.那时候ANSI标准还没有制定出来.现在而言,这种定义应该不被支持了才是.
那个声明应该如下:
int (*p)(int , int);
这样才能指向
int name(int,int)型的函数.么有实验过,但按这种写法是不错的肯定.
三楼那个********p,怎么都觉得不对.
Q2: C 语言中指针函数是如何调用的??
整个程序的目的是对一组数据进行求最大值、最小值或平均值的操作c语言通过指针执行函数,通过输入的指令进行相应的操作。按照不用函数指针的思路c语言通过指针执行函数,程序大概会写成这样:(以下为伪代码)
最大值函数{...}
最小值函数{...}
平均值函数{...}
main{
输入d,则调用 最大值函数
输入x,则调用 最小值函数
输入p,则调用平均值函数
}
不过可以发现如下几点:
· 三个函数的参数形式与返回值都是完全一样的
· 按上述方法写代码,每次调用都要写清楚参数,略显啰嗦
所以就使用函数指针来重新改写代码
GetOperation这个函数本身,就是根据输入指令找到对应的 操作函数并作为函数指针返回它,然后main里直接通过函数指针调用,调用代码只需要写一次,而且甚至不用关心这个函数指针代表的到底是哪个函数
这个程序里只有三个对数据的操作所以函数指针的优点不是很明显。假设有多大100种对数据的操作,如果不使用函数指针,就要不停地写if else if else if...,使用函数指针,甚至可以事先建立一个指令字符与操作函数指针的对应列表,运行时直接在列表里搜索抽取,代码就显得干净利索
GetOperation(c)(dbData,iSize)这句话的具体执行操作是:
(下面假设输入了c='d')
首先执行GetOperation('d'),该函数返回得到GetMax(的指针),再执行GetMax(bData,iSize),即对数据求最大值的操作,函数返回得到最大值
Q3: C语言 用指针和调用函数的方法编写程序?
#include stdio.h
void ToUpper(char *p);
int main(void)
{
char s[10];
printf("Please input a string:\n");
scanf("%s",s);//数组名就是数组地址,不用加取址符
ToUpper(s);//自定义函数,在主函数中被调用时,不用加类型
printf("The new string is %s\n",s);
return 0;
}
void ToUpper(char *p)
{
for(;*p!='\0';p++)//这里的 *p=0删掉,*p=0等价于*p=NULL;也就是说你把指针p变成空指针了,没有指向了
{
if(*p='a'*p='z')//这里少个指针符
*p=*p-'a'+'A';
}
}
Q4: c语言中用指针变量调用函数有什么意义?
指针存储的是地址,而不是实际的值,所以你调用指针变量就是说直接找到它的地址,然后执行它所需要执行的操作,函数也不例外
c语言通过指针执行函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言指针指向、c语言通过指针执行函数的信息别忘了在本站进行查找喔。






