C:通过指针打印数组给出错误的数字

标签 c arrays pointers

我刚刚开始学习 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/

相关文章:

javascript - For 循环生成 URL 不起作用

javascript - 根据两个键(即 JavaScript 中的 from 和 to)从两个对象数组中查找唯一值

arrays - 如何在不知道c中大小的情况下遍历数组

c - 错误返回不兼容指针不兼容 C

c++ - 使用静态库的自定义框架 - 在框架模块 Xcode 9 中包含非模块化 header

c - C 中的 for/while 循环内存清除

c - Linux-C : reading from pipe returns first buffer written to it

Android 读取数组到 TextView

c - 尝试用空格和引号标记字符串

c - 删除前未知删除节点的双向链表