首页技术指针函数返回值(指针作为返回值)

指针函数返回值(指针作为返回值)

编程之家2026-05-22728次浏览

各位老铁们好,相信很多人对指针函数返回值都不是特别的了解,因此呢,今天就来为大家分享下关于指针函数返回值以及指针作为返回值的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

指针函数返回值(指针作为返回值)

指针作为函数的返回值

f函数调用完b被回收的含义是:通知系统,b所占用的内存空间现在是自由的了,其他程序可以使用这块内存了,在被其他程序占用修改前,它还是以前的值。但什么时候会改变,谁也不知道,可能很久才会被其他程序占用,也可能立即会被修改,所以,不要返回一个局部变量的地址。

就你这个代码测试一下:

第二次输出就变了

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

你好

从问题来看,似乎你对于指针的概念没太理解。指针变量中存储的是内存中的地址,而实际的数据放在这个地址中。

按照这段代码来说,int*声明的指针指向内存中的一块地址,而在这块地址中存储着一个整形数值。所以要返回这样的值,也就相当于是返回一个内存地址。因此,在程序中有两种具体的解决办法:

1.在调用函数的时候,直接将变量的指针(即内存地址)作为参数传入,在函数执行的时候,就会自动对内存中相应地址的数据进行操作。使用这种方法也就不需要返回值了。具体到这段代码中,就是在Main中声明int* tempA[10],把foo函数声明为void foo(int* a[10]),调用时用foo(tempA),在foo函数中直接使用a[10]即可。

2.直接把内存地址作为返回值,因为在C中,数组名就是数组首元素的指针,因此直接返回数组名就可以了,即return a即可。如果是普通变量,要用取内存地址的运算符&,比如声明了整型变量 int i,就可以return&i。这与printf函数中的使用方法是相通的。

【按照补充的内容:】

a-------->a1-------->i1

|-------->a2-------->i2

|……………………

|-------->an-------->im

这样的调用方法,只能保证a1-an不被修改,怎么保证i1-im不被修改?

希望以上回答能帮到你。【PS.很久没用C了,如果哪里出了差错,请指正。】

OK,关于指针函数返回值和指针作为返回值的内容到此结束了,希望对大家有所帮助。

网站免费代码(免费低代码平台)java编写简易计算器初学者 java制作计算器