函数和指针的运用

#include <stdlib.h>

int *f1(void)
{
   int x = 10;
   return &x;
}

int *f2(void)
{
   int *ptr;
   *ptr = 10;
   return ptr;
}

int *f3(void)
{
   int *ptr;
   ptr = malloc(sizeof *ptr);
   return ptr;
}
f1和f2运用时有错误的。

Function f1 returns the address of a local variable.  Since the variable’s lifetime ends after the function returns, any use of the return value produces undefined behavior.

Function f2 produces undefined behavior because it dereferences and returns an uninitialized pointer.  (It has not been assigned to point to anything, and its initial value is indeterminate.)

Function f3 has no errors (although its caller should make sure the return value is not NULL before using it, and call free when the memory is no longer needed).

这里考的是返回一个指针的问题,一般来说返回指针的函数,里面一定有malloc之类的内存申请操作,传入指针类型,则是对指针指向的内容做修改。如果想修改指针本身,那就要传入指针的指针。
posted @ 2012-07-08 17:01  wdliming  阅读(97)  评论(0编辑  收藏  举报