c - 为什么我的指针传递函数给了我错误的输出?
问题描述
给出以下内容
#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
解决方案
您需要通过 间接分配result
,而不是设置result
为另一个变量的地址。
int i=0;
while (num!=0)
{
i+=((num%10)*(num%10));
num=num/10;
}
*result = i;
推荐阅读
- c# - 如何获取使用自定义连接管理器定义的 SSIS 连接
- c# - 为什么每个[TestMethod]都会多次调用[TestClass]的构造函数?
- java - 尝试在 Android 中打开 excel 文件时不断收到 FileNotFound 异常
- r - 如何在 R 中按天按 UTC 时间戳分组
- elasticsearch - 弹性搜索嵌套聚合 - 文档中的方法不起作用
- javascript - 如何正确重新格式化 jQuery / JS 函数?
- amazon-ec2 - 如何解决/修复与正在运行的 Kubernetes pod 交互的问题(超时错误)?
- visual-studio-code - 如何将密码字段添加到 VS Code 设置页面?
- java - Kafka 将使用 Java 而非 Python 进行连接
- boolean-logic - 我们是否只为 minterms 输入 1,为 maxterms 输入 0?