如何从C中的函数返回指针()

本文概述

  • C
  • C
在C语言中,指针是一个用来存储另一个变量的内存地址的变量。我们可以将指针传递给函数,也可以将指针从函数返回。但不建议在函数返回后返回局部变量的地址,因为它超出了函数的作用域。
程序1:
【如何从C中的函数返回指针()】下面的程序将给出细分错误, 因为’ 一种’ 对于该函数而言是本地的:
C
//C program to illustrate the concept of //returning pointer from a function #include < stdio.h> //Function returning pointer int * fun() { int A = 10; return (& A); }//Driver Code int main() { //Declare a pointer int * p; //Function call p = fun(); printf ( "%p\n" , p); printf ( "%d\n" , *p); return 0; }

输出如下:
以下是上述程序的输出:
如何从C中的函数返回指针()

文章图片
说明:
这种情况下的主要原因是, 编译器总是使叠用于函数调用。一旦函数退出函数栈得到删除导致函数的局部变量超出范围。
静态变量即使它们超出范围也具有保留其价值的特性。因此, 要执行从C中的函数返回指针的概念, 必须将局部变量定义为静态变量。
程序2:
C
//C program to illustrate the concept of //returning pointer from a function #include < stdio.h> //Function that returns pointer int * fun() { //Declare a static integer static int A = 10; return (& A); }//Driver Code int main() { //Declare a pointer int * p; //Function call p = fun(); //Print Address printf ( "%p\n" , p); //Print value at the above address printf ( "%d\n" , *p); return 0; }

输出如下:
0x601038 10

    推荐阅读