C语言指针变量怎么转化为普通类型变量?

就相当于定义了两个共用体变量那样子行不行?
比如说
定义一个函数
int A(int a,int *b)
{
......
return a;
}

在main()中是
{
int a,b,c;
a=10;
c=A(a,&b);
}

在"......"处怎么写才能在A中改变main中变量b的值?
最新回答
戏子入戏

2024-09-23 00:08:47

赋值语句即可传递数值。
指针变量: 声明 int *p; 语句中 *p 表示 值, p 表示 地址。
普通变量: 声明 int x; 语句中 x 表示 值,&x 表示 地址。
#include <stdio.h>
int A(int a,int *b)
{
*b=a; //赋值语句即可传递数值
return a;
}
int main()
{
int a,b,c;
a=10;
c=A(a,&b);
printf("%d %d %d\n", a,b,c);
return 0;
}
追问
哦,就是说赋值的时候要加一个*,不能直接是b=×××了
浅笑末路繁华

2024-09-23 01:05:05

直接在A中用一个赋值语句就可以改变main中变量b的值,例如:*b=10;这样main中b的值就改为10了。
C语言中在函数中定义的变量都是局部变量,仅在该函数中可用。虽然 main 和 A 中都定义了名为 b 的不同类型变量,但这两个不是同一个变量,存储的位置也不同,作用的范围也不同。尽管main调用了 A ,但main中的变量b 在A中是不起作用的。但为什么通过A又能直接改变main中的b呢? 这就是 A 中指针变量 b 的作用了,A 被调用时,A中的 b 被赋予了main 中 b的地址,即 A中的指针 b 指向了 main 中的整型变量 b。在A中对 *b 赋值实际上就是给 main中的 b 赋值,也就可以改变main 中 b 的值。
———过客栈

2024-09-23 01:19:33

*b=xxx就可以了