如何在函数中返回指针?

时间:2013-12-05 05:01:51

标签: c function pointers

我刚开始学习指针以及它们如何作为参数传递给函数,以及它们如何与函数中的数组具有相同的效果。

现在我很好奇如何改为,在函数中返回指针,或者这是否可能?这是我的问题。我想知道如何返回一般指针。

4 个答案:

答案 0 :(得分:0)

返回指针的原型

int* func();
float* func();
char* func();

只需根据需要定义它们。

答案 1 :(得分:0)

是的,可以从函数返回指针。

int * FunctionReturningAnInteger()
{
   // this function returns integer pointer;
    int *integerPointer = malloc(sizeof *integerPointer); /* memory allocation */
   *integerPointer = 12;  
    return integerPointer; 
} 

char * FunctionReturningACharacter()
{
   // this function returns integer pointer;
    char*charPointer = malloc(sizeof *charPointer ); /* memory allocation */
   *charPointer = 'a';  
    return charPointer ; 
} 

希望现在很清楚

答案 2 :(得分:0)

正如我可以从问题中推断出来的那样,你正试图从这里获得一个明显不可能的教程。你必须尝试自己的例子,最重要的是,你必须理解从函数返回指针的概念。

  

你可以从这些问题开始::

     
      
  1. 何时从函数中返回指针?
  2.   
  3. 这些指针究竟返回了什么?
  4.   
  5. 如何从函数中收集返回的指针?
  6.   

例如,你可以编译和调试这个例子,

/* function to generate and retrun random numbers. */
int * getRandom( )
{
   static int  r[10];
   int i;

   /* set the seed */
   srand( (unsigned)time( NULL ) );
   for ( i = 0; i < 10; ++i)
   {
      r[i] = rand();
      printf("%d\n", r[i] );
   }

   return r;
}

/* main function to call above defined function */
int main ()
{
   /* a pointer to an int */
   int *p;
   int i;

   p = getRandom();
   for ( i = 0; i < 10; i++ )
   {
       printf("*(p + [%d]) : %d\n", i, *(p + i) );
   }

   return 0;
}

答案 3 :(得分:-1)

int i;

/* returns a pointer to an int */
int *function1()
{
    return &i;
}

char c;

/* returns a pointer to a char */
char *function2()
{
    return &c;
}