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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言指针变量怎么转化为普通类型变量?相关的知识,希望对你有一定的参考价值。

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

......
return a;


在main()中是

int a,b,c;
a=10;
c=A(a,&b);


在"......"处怎么写才能在A中改变main中变量b的值?

赋值语句即可传递数值。
指针变量: 声明 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=×××了

参考技术A 直接在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 的值。
参考技术B *b=xxx就可以了

以上是关于C语言指针变量怎么转化为普通类型变量?的主要内容,如果未能解决你的问题,请参考以下文章

C语言---指针变量详解1

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置有啥不一样?

C语言指针定义

C 语言数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )

C\C++指针变量怎么赋值给普通变量。

C 语言指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )