在我声明指针之后,我设置了一个指针。然后我将指针包含在另一个函数的参数中,希望将指针包含的值传递给该函数。出于某种原因,这个问题没有成功,有人可以帮助我吗?
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?
}
答案 0 :(得分:1)
在records
函数中,您已使用相同的名称count1
和count2
声明 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)
在initialize
和records
中,您试图引用非全局计数变量,为了打印这些值,您也可以使用传递的指针值。为此,请在ptr
调用中取消引用printf
变量(带*):
printf("%d %d\n", *ptr1, *ptr2);
如果你不打算修改计数变量,那么你就不需要实际传递指针,你可以直接传递计数变量。