从函数返回指针(变量在函数中声明)

Pav*_*van 1 c pointers function return-type

int* sum(int *mypt,int len){
int i;
int mysum = 0; 
for(i=0;i<len;i++)
  mysum += mysum;   
  return &mysum; // I cannot do this since the function frame goes away after the call.
}

int main()
{

  int *pt = (int*) malloc(3*sizeof(int));   
  pt[0] = 0;
  pt[1] = 1;
  pt[2] = 2;

  int *s = sum(pt,3);
  printf("%d\n",*s);    
  return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我想返回指针mysum.我不能这样做,int static sum = 0因为它是固定的.我无法使用,int const sum = 0因为它给出了一个错误""readonly"".这个问题有方法解决吗 ?

Mar*_*son 6

为什么你需要从sum()你那里返回一个指针,只需按值返回答案.如果你必须返回一个指针,那么你将需要malloc()内存sum()和sum的调用者将得到free()答案,但这不是很有效.

int sum(int mypt, len)
{
int i;
int mysum = 0; 
for(i=0;i<len;i++)
  mysum += mysum;   
  return mysum; // return the answer by value.
}
Run Code Online (Sandbox Code Playgroud)

并改变main()如下:

int main()
{

  int *pt = (int*) malloc(3*sizeof(int));   
  pt[0] = 0;
  pt[1] = 1;
  pt[2] = 2;

  int s = sum(pt,3);
  printf("%d\n",s);    
  return 0;
 }
Run Code Online (Sandbox Code Playgroud)