1
在这个节目,我已经被要求只使用指针在虚空功能如何从这项计划中
#include <stdio.h>
#include "power.c"
#define SIZE 20
int count = 0;
void test(int *n, int *o) {
long long sum = 0, temp;
int remainder, digits = 0;
int i;
int a[SIZE];
temp = *n;
while (temp != 0) {
digits++;
temp = temp/10;
}
temp = *n;
while (temp != 0) {
remainder = temp%10;
sum = sum + power(remainder, digits);
temp = temp/10;
}
if (*n == sum)
{
count++;
a[count] = *n;
}
o = a;
for(i=1;i<=count;i++){
printf("*******%i,%d\n",i,o[i]);
}
}
,并在这里得到每个元素的值是测试台
#include <stdio.h>
#define SIZE 20
int main() {
int c, a, b;
int *x;
int *y;
int i;
a = 2 ;
b = 1000;
//b = 345678910;
for (c = a; c <= b; c++) {
x = &c;
test(x,y);
}
}
它打印出像
******* 1,2- ******* 2,3- ******* 12407
这些值是正确的,但我想在测试平台中调用测试后打印y的每个元素,并期望这些值与上面的值相似,但我不知道该怎么做。我正在寻求你的帮助。
问候 托尼
在的函数'末端test'你设置'o = a;'就好像你希望本地(自动)数组'a []'会在'main'中发现它回到'y'。它不会,它只是覆盖作为参数传递的指针的*副本,返回的指针将被丢弃。即使你*正确地将'a []'传回''main',那么这个数组已经超出了范围。 –
试试'static int a [SIZE];'在你的测试函数中......' – cleblanc
'for(i = 1; i <= count; i ++)'是错误的,数组从'0'到'size-1' ,所以'for(i = 0; i