函数指针 c语言 指针-C语言指向函数的指针的调用

问题描述

C语言指向函数的指针的调用
int *d_bubblesort(int a[]int n)//数组长度为n的冒泡降序排序
{
int ij;
int temp;
for(i=0;i {
for(j=n-1;j>i;j--)
{
if(a[j]>a[j-1])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}

}
}
return(a);
}

void main()
{
int i;
int *p;
int a[10]={65412398710};
int (*fun)(intint);
fun=d_bubblesort;
p=fun(a10);
for(i=0;i<10;i++)
{printf(""%d""p);p=p+1;}
}

这是一个经过简化的可以选择功能的程序 主函数的意思是先定义函数指针*fun 然后指向排序函数 执行fun所指向的函数(就是排序) 然后排序函数会返回排好序的数组的首地址最后进行输出
我知道这个算法肯定有错误 但是不知道错在哪里 希望高手能指正.

解决方案

//直接把你代码拷下来看了下改了改=。=结果已经对了…至于正确的用法…嘛,其实我一直不求甚解的,附代码括弧修改处有注释括弧完:
int *d_bubblesort(int a[]int n)//数组长度为n的冒泡降序排序
{

int ij;int temp;for(i=0; i<n; i++){    for(j=n-1; j>i; j--)    {        if(a[j]>a[j-1])        {            temp=a[j-1];            a[j-1]=a[j];            a[j]=temp;        }    }}return(a);

}

void main()
{

int i;int *p;int a[10]= {65412398710};int (*fun)(intint);fun=d_bubblesort;p=fun(a10);for(i=0; i<10; i++){    printf(""%d ""*p);//输出应该是指针内容啊,你输出指针想干啥……    p=p+1;}

}

解决方案二:
int (*fun)(intint);你这应该是指向一个返回为int,参数为(intint)的函数,不是返回为int*的函数。

时间: 2025-01-30 11:09:58

函数指针 c语言 指针-C语言指向函数的指针的调用的相关文章

C++编程指向成员的指针以及this指针的基本使用指南_C 语言

指向成员的指针指向成员的指针的声明是指针声明的特例.使用以下序列来声明它们: [storage-class-specifiers] [cv-qualifiers] type-specifiers [ms-modifier] qualified-name ::* [cv-qualifiers] identifier [= & qualified-name :: member-name]; 声明说明符: 可选存储类说明符. 可选 const 和/或 volatile 说明符. 类型说明符:类型的名称

C++指向函数的指针实例解析_C 语言

通常来说C++函数指针是指指向函数的指针,而非指向对象的指针.就像其他指针一样,函数指针也指向某个特定的类型.函数类型由其返回类型以及形参表确定,而与函数名无关. 定义: char (*fP)(char,int); 赋值: char function(char i,int j) { } fp=function; 调用 (*fp)(10,100); type char (*FUN)(char,int);//类型定义 FUN fp ;//定义fp为指向函数的指针 volatile的用法和作用: co

C语言 函数指针(指向函数的指针)详解_C 语言

一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数.这种指针就是函数指针. 函数指针的定义形式为: returnType (*pointerName)(param list); returnType 为函数返回值类型,pointerNmae 为指针名称,param list 为函数参数列表.参数列表中

C++指向函数的指针用法详解_C 语言

本文以实例形式展示了C++指向函数的指针用法,是深入学习C++所必须掌握的关键知识点.分享给大家供大家参考之用.具体方法如下: 函数指针 现来看看以下声明语句,看看其含义: float (*h(int, void (*)(int)))(int); 以下是一个变量指针的定义语句: float* pf; 以下是一个普通函数的声明语句: float f(); 请看以下声明语句: float* g(); 因为()的优先级高于*, 所以相当于: float* (g()); g是一个函数, 返回值为floa

C++中返回指向函数的指针示例_C 语言

在C++中,函数的形参可以是指向函数的指针,函数也可以返回函数的指针.例如:int (*ff(int)) (int *,int);表示:ff(int)是一个函数,带有一个int型的形参,该函数返回int (*) (int *,int),它是一个指向函数的指针,所指向的函数返回int型并带有两个分别是Int*和int型的形参.使用typedef可使得定义更加易懂:typedef int (*PF) (int *,int);PF ff(int);下面给出一个例子: 复制代码 代码如下: #inclu

C++中用指向数组的指针作函数参数_C 语言

1.一维数组名作为函数参数传递一位数组名,就相当于该数组的首个元素的地址: 复制代码 代码如下: int a[10];int *p;p=a;//p=a与p=&a[0]是等价的 实例代码: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; void Print(int *p ,int n); Print(a,10); cout<<endl

C语言结构体中的函数指针

引言 指针是C语言的重要组成部分, 于是深入理解指针并且高效地使用指针可以使程序员写出更加老练的程序.我们要记住指针是一个指向内存地址的变量.指针可以引用如int.char--常见的数据类型,例如: int * intptr; // 声明一个指向整型值的指针 int intval = 5 ; // 定义一个整型变量 intptr = & intval ; // intptr现在包含intval的地址 指针不仅仅指向常规的类型还可以指向函数 函数指针 函数指针的内容不难理解,不再赘述,参见<C

解析C++中指向对象的指针使用_C 语言

C++指向对象的常指针将指针变量声明为const型,这样指针值始终保持为其初值,不能改变. 如: Time t1(10,12,15),t2; //定义对象 Time * const ptr1; //const位置在指针变量名前面,规定ptr1的值是常值 ptr1=&t1; //ptr1指向对象t1,此后不能再改变指向 ptr1=&t2; //错误,ptr1不能改变指向 定义指向对象的常指针的一般形式为: 类名 * const 指针变量名; 也可以在定义指针变量时使之初始化,如将上面第2,

C语言const指针和指向const的指针的理解

1.const 的理解     const 是C语言(C++)的一个关键字,需要注意的是,const 关键字是把变量变为一个只读的变量,绝对不是将这个变量变为常量.也就是说经过const 修饰的变量成为只读的变量之后,那么这个变量就只能作为右值(只能赋值给别人),绝对不能成为左值(不能接收别人的赋值).       经过const 修饰的变量,在定义的时候,就要进行初始化. const int a = 10;  // 正确 const int a;  // 错误       const 关键字最