如何在C中的函数中保存变量读取?

时间:2014-12-04 15:24:20

标签: c function pointers save

我们说我有这个功能:

void read() {
    int num;
    scanf("%d", &num);
}

我想在另一个函数中使用num变量:

void func() {
    for (i = 0; i < num; i++)
        printf("%d ", i);
}

但是当试图编译它时,该变量是未初始化的。我知道它很可能需要指针,但我无法掌握它。

4 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点:

  • 将您读取的变量返回给调用者,或
  • 让调用者为您的变量提供空间,并将其存储在那里。

第一种方法要求您将返回类型更改为int

int read() {
    int num;
    scanf("%d", &num);
    return num;
}

void func() {
    int num = read();
    for (i = 0; i < num; i++)
        printf("%d ", i);
}

第二种方法要求你使用int*指针:

void read(int* p) {
    scanf("%d", p);
}

void func() {
    int num;
    read(&num);
    for (i = 0; i < num; i++)
        printf("%d ", i);
}

答案 1 :(得分:1)

你应该func

void func(int num) {
    for (i = 0; i < num; i++)
        printf("%d ", i);
}

你还需要传递价值,

void read() {
    int num;
    scanf("%d", &num);
    func(num);
}

答案 2 :(得分:0)

您可以将变量设置为全局和函数内部:

void func() {
  int i;
  for(i=0;i<num;i++)
   printf("%d ", i);
}

答案 3 :(得分:0)

您并不总是需要指针 - 您只需返回值然后再使用它。

int read() {
    int num;
    scanf("%d", &num);
    return num;
}

您现在可以存储函数返回的值以供将来使用,例如

void func() {
    int num = read();
    for (i = 0; i < num; i++)
        printf("%d ", i);
}