指针函数返回值是什么?c语言函数返回指针
大家好,关于指针函数返回值是什么很多朋友都还不太明白,今天小编就来为大家分享关于c语言函数返回指针的知识,希望对各位有所帮助!
指针作为函数的返回值
f函数调用完b被回收的含义是:通知系统,b所占用的内存空间现在是自由的了,其他程序可以使用这块内存了,在被其他程序占用修改前,它还是以前的值。但什么时候会改变,谁也不知道,可能很久才会被其他程序占用,也可能立即会被修改,所以,不要返回一个局部变量的地址。
就你这个代码测试一下:
第二次输出就变了
什么是函数返回值
简单的说,函数就是一个算法,有不有返回值是跟这个函数做什么的有关系。
一般情况下,求和这类的就要返回值,比如
int add(int a,int b)
{
return a+b;//这就返回a+b的和,用函数的时候,你只要传a,b的值就得了
}
用的时候这样:
int s=add(100,200);//就把100+200也就是300的值赋给s了
这种情况就是相当于你去A地做买东西,你肯定得拿东西回来。你拿回来的东西也就是返回值
-------------------------------------------
还有些不用返回值的,比如,输出,或者给有地址的变量赋值等这些函数前面就可以用void表示无返回值,当然你也可以返回你想返回的。比如说成功或者失败返回true or false.也可以随意返回一个int型的 1或者0
比如:
void pri(int i)
{
printf("%d",i);//这个就是打印一个整型的i出来
}
这种就像你去A地不干什么,就去那儿吼两句,也就不用拿什么回来了。
还有种给有地址的变量赋值。那就相当于你去a地寄了一封信,也不用什么什么回来。
啊,打得手累,我就这样理解了。给是清楚点了,呵呵
例如你要计算5+3=?,这个就需要返回值啦,但你要是排列字符之类的,就不需要返回值,因为它是对字符进行操作,没有数字。
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);//释放动态内存
}
好了,文章到此结束,希望可以帮助到大家。