c语言函数返回指针,C语言函数返回指针

kodinid 9 0

大家好,今天小编关注到一个意思的话题,就是关于c语言函数返回指针问题,于是小编就整理了5个相关介绍c语言函数返回指针的解答,让我们一起看看吧。

  1. c语言函数返回地址?
  2. c中函数返回值怎么释放?
  3. c语言回调函数怎么取值?
  4. C语言带返回值的函数,返回值是字符串类型的应该怎么定义和调用呀?

c语言函数返回地址

1、函数直接返回一个指针类型即返回地址。2、C语言属于高级编程语言。在C语言中一个函数不能返回局部地址即指针。例: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中函数返回值的释放,使用分配在堆上的内存

c语言函数返回指针,C语言函数返回指针-第1张图片-安济编程网
图片来源网络,侵删)

分配在堆上的内存主要指通过malloc、calloc、realloc等函数动态分配的内存,由于堆上的内存需要手动释放,因此可以在使用完以后再释放,这样指针就不会指向未知。

注意:堆上的内存必须要用完即释放,否则容易造成内存泄漏。

另外一般要返回指针的情况,也可以用全局变量或者传入指针参数代替。

c语言函数返回指针,C语言函数返回指针-第2张图片-安济编程网
(图片来源网络,侵删)

c语言回调函数怎么取值

1、使用typedef声明一个函数指针。

2、使用C语言实现一个和函数指针返回值类型。

函数参数都一样的函数(函数名字任意取)。

c语言函数返回指针,C语言函数返回指针-第3张图片-安济编程网
(图片来源网络,侵删)

3、将实现的C语言函数作为参数传递(实际上就是传递的函数指针)。

4、满足特定的情况下,调用回调函数。

//没有参数的回调函数

typedef int (*callBackFunc)();

//含有参数的回调函数,回调函数参数可以是一个或者多个

typedef int (*callBackFunc)(int x);

C语言带返回值的函数,返回值是字符串类型的应该怎么定义和调用呀?

给你写了个例子,fun函数用于字符串开辟空间,然后返回字符串的指针

#include

#include

char * fun(int n)

{

return (char *)malloc(n);

}

void main()

{

char *ray;

既然C语言函数的局部变量会被释放,那为什么函数还可以把它return返回呢?

看了底下兄弟的答复,只能说答对了一半。

真正的原因在于ABI(应用程序二进制接口)。

ABI定义了与系统交互的细节:如数据类型、大小对齐;调用约定(控制函数的参数的传递方向、可变长度处理、堆栈清理主体以及如何接受返回值等);系统调用的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,目标文件的二进制格式程序库等等。一个完整的ABI,像Intel二进制兼容标准 (iBCS),允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作体统上运行

其他的 ABI 标准化细节还包括 C++ 名称修饰 ,和同一个平台上的编译器之间的调用约定,但是不包括跨平台的兼容性。

至于底下兄弟所说的EAX保存返回值,这个只是X86的ABI规范,在PowerPC等其他CPU架构平台,实现是不一样的!——PowerPC下,返回值是保存在R3寄存器中的

谢邀。

C语言函数的局部变量在函数执行完毕后,会被释放,相信即使是C语言初学者,也是了解这一点的。不过,我们在函数中定义一个局部变量,却是可以通过 return 语法将其返回给调用者的,这也许就是题主的疑惑之处。

C语言函数怎么可以把一个被释放的值返回给调用者使用呢

请看下面这张图,进一步来说,C语言程序每调用一个函数,就会在栈区为其分配一块区域,所有局部变量都是在这块区域里存放的,函数执行完毕返回后,系统自动就将这块区域收回了。

这块区域较为正式的名字叫“栈帧”。

既然函数的局部变量都存放在栈区,栈区在函数返回就释放了,那为什么 add 函数还能把局部变量返回呢?

其实函数返回的并不是局部变量,而是局部变量里面存放的数据

我们用鞋柜来比喻局部变量,用鞋子来比喻数据。我们想取出的是鞋子,而不是鞋柜,对吗?

到此,以上就是小编对于c语言函数返回指针的问题就介绍到这了,希望介绍关于c语言函数返回指针的5点解答对大家有用。

标签: 函数 返回 语言