c语言函数返回指针
⑴ c语言 带指针的函数 如何让它return指针
1、C语言属于高级编程语言。在C语言中一个函数不能返回局部地址即指针。
2、例如:内
int * func(void)
{
int a= 10;
int *p = &a;
return p;
}
a变量的区域是容func()函数,在函数内有效,出了函数就释放了,此时p指向的是一个未知
地址,属于错误用法。
正确用法
int *p = NULL;
int * func(void)
{
p = malloc(sizeof(int));
if(p!=NULL)
{
*p = 10;
}
return p;
}
⑵ C语言 函数指针作为返回值
C语言指向函数的指针承载的信息比较复杂,组织起来要素要写全。根据指向函数的指针的书写语法,下面的代码就是一个返回函数指针的函数:int (*f(void))(int){//f是函数,没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值 return fun;//fun是个函数名,必须具备一个int形参、返回int值的要求}以下代码可以验证上述函数的正确性:<pre t="code" l="cpp">//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int fun(int n){
printf("abcdef\n");
return n;
}
int (*f(void))(int){
return fun;
}
int main(void){
printf("%d\n",f()(100));//调用函数f,通过f返回的指针用100调用函数fun
return 0;
}输出是:abcdef100
⑶ C语言怎么让“函数”返回“指针数组”
首先,你不应该返回局部变量的指针,因为局部变量在离开函数后就会被销毁。如果你想这样返回一个数组的话,你应该malloc出一个数组来返回。
至于应该return什么,return
(malloc出来的那个指针)就可以了。
例如
int**
foo()
{
int
**p
=
(int
**)malloc(sizeof(int
*)*10);
...
...
...
return
p;
}
这个p指向一个内存段,这个内存段存有十个int*类型的元素。
⑷ C语言用返回指针值的函数输出数组
因为input()函数来创自建的数组num[5]作用域在input()函数之内,当input()函数调用结束后,这段内存会被回收,也就是里面的值会变成其他数。修改办法是在堆区创建数组变量手动释放内存!
修改后:
⑸ C语言如何声明一个返回函数指针的函数
C语言指向函数的指针承载的信息比较复杂,组织起来要素要写全。根内据指向函数的指针的容书写语法,下面的代码就是一个返回函数指针的函数:
int (*f(void))(int){//f是函数,没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值
return fun;//fun是个函数名,必须具备一个int形参、返回int值的要求
}
以下代码可以验证上述函数的正确性:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intfun(intn){
printf("abcdef ");
returnn;
}
int(*f(void))(int){
returnfun;
}
intmain(void){
printf("%d ",f()(100));//调用函数f,通过f返回的指针用100调用函数fun
return0;
}
输出是:
abcdef
100
⑹ c语言 函数返回数组指针
函数的返回值由函数的定义决定
要使函数返回一个指针,那么在函数定义时应规定返回值为指针,这样可使函数返回一个指针
要是函数返回的指针为指向一维数组,那么在函数运行过程中应使指针指向数组,这样在返回时就可以让函数返回一个指向一维数组的指针,但还需注意这个一维数组的内存在函数运行完后是否释放这一问题
⑺ C语言返回结构指针的函数
进入fun函数时,会创建一个局部变量形参stu,这个形参stu与实参stu1不是一回事,stu只是与stu1数据一模一样的复制品而已。当fun函数对stu操作结束后返回stu的指针,但因为stu是局部变量,在fun函数结束后会释放掉,由于main函数使用fun函数返回的指针pp,pp指向了已被释放掉的stu,所以打印时必然输出些乱码。
⑻ C语言函数的返回值为指针时的问题
week_day作为lookstr()的参数,经过函数lookstr()提取之后,return(table[day]),得到一个静态字符串的指针;输入数字有误情况下return(NULL)。
⑼ C语言 函数返回指针
首先,来说一下第一个问题源,第一个不交换是因为定义的k是一个指针,指针说白了就是一个指向,我指向你,他指向她,然后换成我指向她,他指向你,你把他们指向的位置交换,而并没有交换他们地址里面存储的值,这样是并没有任何区别,在最后函数结束之后,函数的那些指针指向全部释放,和修改不修改没什么两样;定义的是一个整型变量,他把s
指针指向的地址里面的值与
t
指针指向的地址的值进行了交换,这样就修改了内存里面的值,即便是函数结束了也不会释放,自然就能做到交换了。
第二个问题,存储地址是会释放,但是释放的是函数内部定义的局部变量,现在你已经把s的地址通过return
返回回来并且存在
主函数的
r
中了,所以自然就不会释放了
⑽ c语言中如何用返回函数指针
有C语言的学习资料,是否可以帮到你呢?
你可以登录查看。
希望对你有用
记得点赞哟