首页 > 解决方案 > 为什么我的指针传递函数给了我错误的输出?

问题描述

给出以下内容

#include  <stdio.h>    
void func2 (int num, int *result);   
int main()    
{    
   int num, result;    

   printf("Enter a number: \n"); 
   scanf("%d", &num);
   func2(num, &result);    
   printf("func2(): %d\n", result);    
   return 0;    
}

void func2(int num, int *result)     
{    
//key in code    
}

在我写的 void func2

int i=0;    
result=&i;      
while (num!=0)    
{    
i+=((num%10)*(num%10));    
num=num/10;    
}

但是编程没有正确返回变量 i 的值。我的变量赋值有什么问题?

预期输出:

Enter a number:    
24 (user enter)    
func2(): 20

实际输出:

Enter a number:    
24 (user enter)    
func2(): 32767

标签: cpointers

解决方案


您需要通过 间接分配result,而不是设置result为另一个变量的地址。

int i=0;    
while (num!=0)    
{    
    i+=((num%10)*(num%10));    
    num=num/10;    
}
*result = i;

推荐阅读