c语言函数返回指针ppt c语言函数可以返回指针吗

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语言怎么让“函数”返回“指针数组”

首先,你不应该返回局部变量的指针,因为局部变量在离开函数后就会被销毁。如果你想这样返回一个数组的话,你应该malloc出一个数组来返回。

至于应该return什么,return

(malloc出来的那个指针)就可以了。

例如

int**

foo()

{

int

**p

=

(int

**)malloc(sizeof(int

*)*10);

...

...

...

return

p;

}

这个p指向一个内存段,这个内存段存有十个int*类型的元素。

C语言 函数返回指针

首先,说一下第一个问题,第一个不交换是因为定义的k是一个指针,指针说白了就是一个指向,我指向你,他指向她,然后换成我指向她,他指向你,你把他们指向的位置交换,而并没有交换他们地址里面存储的值,这样是并没有任何区别,在最后函数结束之后,函数的那些指针指向全部释放,和修改不修改没什么两样;定义的是一个整型变量,他把s

指针指向的地址里面的值与

t

指针指向的地址的值进行了交换,这样就修改了内存里面的值,即便是函数结束了也不会释放,自然就能做到交换了。

第二个问题,存储地址是会释放,但是释放的是函数内部定义的局部变量,现在你已经把s的地址通过return

返回回来并且存在

主函数的

r

中了,所以自然就不会释放了

C语言返回结构指针的函数

进入fun函数时,会创建一个局部变量形参stu,这个形参stu与实参stu1不是一回事,stu只是与stu1数据一模一样的复制品而已。当fun函数对stu操作结束后返回stu的指针,但因为stu是局部变量,在fun函数结束后会释放掉,由于main函数使用fun函数返回的指针pp,pp指向了已被释放掉的stu,所以打印时必然输出些乱码。


文章标题:c语言函数返回指针ppt c语言函数可以返回指针吗
本文来源:http://pwwzsj.com/article/hpjdpo.html