C编程:如何将变量从一个函数传递到另一个函数?

时间:2013-02-24 23:20:07

标签: c pointers

在我声明指针之后,我设置了一个指针。然后我将指针包含在另一个函数的参数中,希望将指针包含的值传递给该函数。出于某种原因,这个问题没有成功,有人可以帮助我吗?

int main()
{
  int *ptr1, *ptr2, count1 = 0, count2 = 0;
  ptr1 = &count1;
  ptr2 = &count2; //sets up the pointees
  records(ptr1, ptr2, filename);

  printf("%d %d\n", count1, count2);//after the loop in the function records, count1 should hold the value 43 and count2 15, however I don't think I passed the values back to main correctly because this print statement prints 0 both count1 and count2
  return 0;
}

FILE* records(int* ptr1, int *ptr2, const char* filename)
{
  FILE* fp;
  int count1 = 0, count2 = 0

  while()//omitted because not really relevant to my question

  printf("%d %d\n", count1, count2)//when I compile the program, count1 is 43 and count2 is 15
  return fp;
}

void initialize(int *ptr1, int *ptr2)
{
  printf("%d %d", count1, count2);//for some reason the values 43 and 15 are not printed? I thought I had included the pointers in the parameters, so the values should pass?
}

3 个答案:

答案 0 :(得分:1)

records函数中,您已使用相同的名称count1count2声明 new 变量。这些与main中的不同。如果您想使用main中的变量,则应将count1替换为(*ptr1),将count2替换为(*ptr2)中的records,以便使用指针进行访问main中的变量。

要明确的是,在records中你应该摆脱int count1 = 0, count2 = 0然后(*ptr1)和{{1}替换每个用户的用法}。

答案 1 :(得分:0)

提供的代码就是这样做的:

int main()
{
  int *ptr1, *ptr2, count1 = 0, count2 = 0;
  ptr1 = &count1;
  ptr2 = &count2; //sets up the pointees

  printf("%d %d\n", count1, count2);//
  return 0;
}

猜猜你需要额外的一点:尝试调用一些函数 - 尝试records

答案 2 :(得分:0)

initializerecords中,您试图引用非全局计数变量,为了打印这些值,您也可以使用传递的指针值。为此,请在ptr调用中取消引用printf变量(带*):

printf("%d %d\n", *ptr1, *ptr2);

如果你不打算修改计数变量,那么你就不需要实际传递指针,你可以直接传递计数变量。