理论教育 C语言程序设计:指针变量引用

C语言程序设计:指针变量引用

时间:2023-11-02 理论教育 版权反馈
【摘要】:在引用指针变量进行间接访问时,会经常使用运算符&和运算符*。运算符&是取地址运算符,用于取变量的地址,将变量地址存放于指针变量中。执行下面的代码后,指针变量p1指向变量n。例8.1分析指针变量的引用情况。由此可知,同一个指针变量可先后指向不同的变量,如p先后指向m与n。例8.2分析下列程序的运行情况。例8.3使用指针变量编写:交换两个变量的值。

C语言程序设计:指针变量引用

在引用指针变量进行间接访问时,会经常使用运算符&和运算符*。

(1)运算符&是取地址运算符,用于取变量的地址,将变量地址存放于指针变量中。

例如:

表示取变量n的地址赋给指针变量p1。

(2)运算符*是指针运算符,用于访问指针变量所指向的变量。

例如:

其中,*p1与n等价,可用间接方式访问n,即用*p1代表n。语句“*p1=36;”与“n=36;”等价。

执行下面的代码后,指针变量p1指向变量n。

这时,可以用以下两种方式访问变量n:

直接访问:如“printf("%d",n);”,输出“36”。

通过指针变量间接访问:如“printf("%d",*p1);”,输出“36”。

例8.1 分析指针变量的引用情况。

程序代码如下:(www.daowen.com)

程序运行结果:

【分析】执行语句“p=&m;”后,*p与m等价,所以语句“printf("%d,%d\n",m,*p);”输出了两个30。执行语句“*p=230;”后,m也是230,所以执行语句“printf("%d,%d\n",m,*p);”之后,输出了两个230。执行语句“p=&n;”之后,*p与n等价,接着执行语句“*p=780;”,n的值变为780,然后执行“printf("%d,%d\n",n,*p);”,输出了两个780。

由此可知,同一个指针变量可先后指向不同的变量,如p先后指向m与n。

例8.2 分析下列程序的运行情况。

程序代码如下:

程序运行结果:

【分析】执行语句“p1=&count;”后,count和*p1等价。执行语句“p2=&e;”后,e和*p2等价。执行语句“p3=&charact;”后,charact和*p3等价。

例8.3 使用指针变量编写:交换两个变量的值。

程序代码如下:

程序运行情况如下(假设为a和b分别输入“5”和“8”):

【分析】定义“int a,b,c,*p1,*p2;”后,可以执行语句“p1=&a;p2=&b;”,使得a与*p1等价,b与*p2等价,然后可以采用间接方式“scanf("%d,%d",p1,p2);”为a和b赋值,用语句“c=*p1;*p1=*p2;*p2=c;”来交换a和b的值,用语句“printf("%d,%d\n",*p1,*p2);”输出交换前后a和b的值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈