【时时三省】(C语言基础)怎样引用指针变量
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
在引用指针变量时,可能有3种情况:
( 1 )给指针变量赋值。如:
p = &a;
指针变量p的值是变量a的地址,p指向a。
( 2 )引用指针变量指向的变量。
如果已执行" p = & a ;”,即指针变量p指向了整型变量a .,则
printf ( " % d”,* p );
其作用是以整数形式输出指针变量p所指向的变量的值,即变量a的值。
如果有以下赋值语句:
* p = 1;
表示将整数1赋给p当前所指向的变量,如果p指向变量a,则相当于把1赋给a,即“a = 1;”。
( 3 )引用指针变量的值。如:
printf ( " % o”, p );
作用是以八进制数形式输出指针变量p的值,如果p指向了a,就是输出了a的地址,即& a。
运算符
( 1 ) &取地址运算符。& a是变量a的地址。
( 2 ) * 指针运算符(或称“间接访问”运算符),* p代表指针变量p指向的对象。下面是一个指针变量应用的例子。
例题:
输入a和b两个整数,按先大后小的顺序输出a和b。
解题思路:
用指针方法来处理这个问题。不交换整型变量的值,而是交换两个指针变量的值。
编写程序:
运行结果:
程序分析:
输入a = 5,b = 9,由于a < b,将p1和p2交换。
注意:a和b的值并未交换,它们仍保持原值,但p1和p2的值改变了。pl的值原& a,后来变成& b,p2原值为&b,后来变成&a。这样在输出*pl和*p2时,实际上是输出变量b和a的值,所以先输出9,然后输出5。
if语句里面的内容可以改为
p1=b;
p2=a;
即直接对pl和p2赋以新值,这样可以不必定义中间变量p,使程序更加简练。
这个问题的算法是不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址)。