#include<stdio.h>
int g(int *a, int *b);
int main()
{
int a = 2;
int b = 7;
b = g(&b , &a);
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
int g(int *a, int *b)
{
(*a) = (*a) + 3;
(*b) = 2*(*a) - (*b)+5;
printf("a = %d, b = %d\n", *a, *b);
return (*a)+(*b);
}
输出为:
a = 10, b = 23
a = 23
b = 33
我正在学习C编程入门,并且在理解其工作原理时遇到困难?感谢您的帮助!
通过使用*
,您可以访问指针引用的对象。当指针引用int
变量a和b时,您需要对这些变量进行操作。我认为相同的变量名称使您感到困惑
int g(int *p1, int *p2)
{
(*p1) = (*p1) + 3;
(*p2) = 2*(*p1) - (*p2)+5;
printf("*p1 = %d, *p2 = %d\n", *p1, *p2);
return (*p1)+(*p2);
}
使用'&',您将变量的地址提供给函数,而不是值。使用“ *”,您可以指定地址的值。
使用b = g(&b , &a);
,将变量b和a的地址提供给函数。但是您可以使用'* a'访问b的地址,因为您以这种方式声明了该函数:int g (int * a, int * b)
* a指向b变量的地址。* b指向变量的地址。
我认为让您感到困惑的是不同的变量名。
为了使您自己更轻松,您可以将声明更改为int g (int * b, int * a)
如果您想更改它* b将指向b变量的地址,并且* a会指向您变量的地址。