我刚刚开始学习 C 代码,并得到了一个练习来创建您可以在我的代码中看到的两个函数 createData()
和udskriv()
哪里createData
应该使用用户输入创建一个数组,并且 udskriv
方法应该使用指针打印它。
但是,我的代码在打印时只给出 1 或 2 个正确的数字,然后通常是 0 和一个非常高的数字(例如 10 位数字)。我能够通过运行 main
中的循环来实现它,而无需函数来使其工作。方法,但我无法让它与它们一起工作。
我有一些 Java 经验,这可能会帮助你解释为什么我做错了。
#include <stdio.h>
static int* createData()
{
int test[4];
int c;
int *ptr;
printf("Indtast 4 tal, 1 af gangen");
for (c = 0; c < 4; c++)
{
scanf("%d", &test[c]);
}
ptr=&test;
return (ptr);
}
static void udskriv(int* ptr)
{
int i;
for (i=0;i<4;i++)
{
printf("%d\n",*ptr++);
}
}
int main(void)
{
udskriv(createData());
}
最佳答案
您正在返回一个指向本地数据的指针。函数 createData
中的变量 test
是一个局部变量,技术上称为“存储类 auto”。当函数返回时,用于测试
的内存可能会用于其他目的。
关于C:通过指针打印数组给出错误的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369341/