c语言函数指针返回值 c语言函数指针返回值是什么

C语言指针与返回值

函数A的返回值错误。虽然地址和指针很像,但还是不同的两个东西。而且,一旦出了函数A,返回的地址,也就该被回收,会导致程序出错。是非常危险的行为。

成都创新互联公司是网站建设技术企业,为成都企业提供专业的成都网站建设、成都网站设计,网站设计,网站制作,网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制适合企业的网站。十载品质,值得信赖!

举个例子说明下吧。

int *p=a;

这个,在数值上,p是和a的地址相等的,也就是有p==a。

这时如果a=1;那么你知道*p==1,是真。

但是此时,p存储的是a的地址,p还有自己本身的地址。就好比,你(p)坐在座位上,用手指向另一个座位(a)一样。那个座位就是a的地址,上面坐着谁(1),就是a的值。你本身就是指针了。

所以说,返回值是指针和地址是完全不同的两个概念。所以就是错误的!

B函数为啥正确呢?因为NULL是一种特殊的指针,叫空指针。所以是可以算作正确的。

c语言中如何用返回函数指针

举个两个整数加法的例子,希望对你有帮助:

#include stdio.h#include conio.h

//声明指向函数的指针类型fpAdd,该类型的函数,有两个整数作为参数,返回值是一个整数。

//其他类型的函数指针声明方式类似,即:typedef 函数返回值类型 (*函数指针类型名称)(函数参数列表);

typedef int (*fpAdd)(int a,int b);

//声明两个和fpAdd类型一致的函数

int AddTest(int a,int b);

int AddTestAdd5(int a,int b);

//声明两个返回函数指针的函数

fpAdd GetAddFun();

fpAdd GetAdd5Fun();

void main()

{

int a = 1;

int b = 2;

int sum;

//取得指向函数(AddTest)的指针

fpAdd add = GetAddFun();

//取得指向函数(AddTestAdd5)的指针

fpAdd add5 = GetAdd5Fun();

//通过函数指针调用函数。

sum = add(a,b);

//输出结果

printf("a+b=%d\n",sum);

sum = add5(a,b);

//输出结果

printf("a+b=%d\n",sum);

getch();}

int AddTest(int a,int b)

{

return a+b;

}

int AddTestAdd5(int a,int b)

{

return a+b+5;

}

fpAdd GetAddFun()

{

return AddTest;

}

fpAdd GetAdd5Fun()

{

return AddTestAdd5;

}

C语言怎么让一个函数返回指针

这种方式叫做“用指针函数*creat()的返回值来传递动态内存”,这是一个C语法

首先你要注意,子函数*creat()用了malloc动态申请内存,而return返回的是指针变量所指向的地址,而不是指针!相当于将你所申请的动态内存返回给主函数

int

*fun(void)//这里是指针函数

{

int

*p

=

(int

*)

malloc

(int);//动态申请内存//p在这里指向了一块合法内存的地址

return

p;

}

void

main(void)

{

int

*q

=

NULL;

q

=

fun();//fun()返回指针p所指向的地址,(指针p是在栈上创建的,所以*fun()函数运行完,指针所分配的内存被系统自动释放)这时q指向p,得到了malloc所申请到的内存

free(q);//释放动态内存

}

C语言 关于指针函数返回值

struct student *p, *q, *head;

这里head不就是 struct student 类型的指针么。


本文标题:c语言函数指针返回值 c语言函数指针返回值是什么
文章起源:http://csdahua.cn/article/dojccii.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流