文档详情

《C语言程序设计》课件——38指针变量的定义及使用.ppt

发布:2025-03-27约2.52千字共7页下载文档
文本预览下载声明

9.2指针变量的定义及使用1.定义格式及说明2.指针变量的引用(1)运算符和*运算符(2)使用指针运算符应注意的问题(3)对指针变量的操作3.指针变量的应用举例9.2.1指针变量的定义

格式:

存储类型数据类型*指针变量名1=初值1,…;

说明:

(1)定义一个指针变量时,必须在一个变量名前加指针说明符“*”。

(2)在定义了一个指针变量后,系统为之分配一个存放指针变量的存储单元。

(3)指针变量和普通变量完全一样,由它的定义位置决定指针的作用域和生命期。

(4)定义指针变量后,该指针变量并未指向确定的变量。

例如:int*p,i=3;

p=I;

(5)一个指针只能指向与其相同类型的变量。9.2.2指针变量的引用

1.“”运算符和“*”运算符

(1)“”运算符,称为“取地址运算符”。

格式:变量名

功能:取某一“变量”的地址。

例如,x的值为变量x的地址。

(2)“*”运算符,称为“指针运算符”或“间接运算符”。

格式:*指针变量名

功能:取某“指针变量”所指向的变量中的内容。

例如:floata,b,*P;

a=1.23;P=a;

b=*P;

printf(%.2f,%.2f,%.2f,a,b,*P);

2.使用指针运算符应注意的问题

(1)指针变量定义中“*”运算符应注意的问题。

inta,*p=a;①

*p=5;②

(2)“”运算符与“*”运算符是互逆的。

例如:“y=x;”与“y=*x;”

3.对指针变量的操作

定义一个指针变量:

int*p,a;

(1)给一个指针变量赋予一个地址值。

p=a;

(2)访问指针变量所指向的变量。

scanf(%d,p);

printf(%d,*p);4.指针变量的应用举例

【例9.1】使两个指针指向同一个变量。

main()

{inta,b,*p1=a,*p2=b; /*p1→a,p2→b*/

scanf(%d,%d,a,b);

printf(%d,%d\n,*p1,*p2);

p2=p1; /*p2→a*/

printf(%d,%d\n,*p1,*p2);

}

运行情况如下:

输入:1,2(回车)

显示:1,2

显示:1,1【例9.2】使两个指针变量交换指向。

main()

{inta=1,b=2,*p1=a,*p2=b,*p;

printf(%d,%d\n,*p1,*p2);

p=p1;p1=p2;p2=p;

printf(%d,%d\n,*p1,*p2);

}

运行结果为:

1,2

2,1

【例9.3】交换两个指针变量所指向的变量的值。

main()

{inta=1,b=2,*p1=a,*p2=b,i;

i=*p1;*p1=*p2;*p2=i;

printf(a=%d,b=%d\n,a,b);

}

运行情况如下:

a=2,b=1注意,指针变量名本身不含“*”号。这个存放指针变量的存贮单元一般都占有固定的字节。定义指针变量后,该指针变量并未指向确定的变量。要想使一个指针变量指向一个确定的变量,必须将确定变量的地址赋给该指针变量。指针变量可以定义为指向实型、字符型或其他类型的变量。但一个指针只能指向与其相同类型的变量。*例如:

floata,b,*p; /*定义p为指向实型变量的指针变量*/

a=1.23;p=a; /*把变量a的地址赋给p*/

b=*p; /*把p所指向的变量中的内容赋给b*/

printf(%.2f,%.2f,b,*p);/*运行结果为:1.23,1.23*/*在定义指针变量的语句①中的“*”不是运算符,是一个说明符。在程序的执行语句②中的“*”是指针运算符“*”,“*p”代表p指向的变量。

例如:“y=x;”与“y=*x;”两个语句是等效的。*将int型变量a的地址赋给int型指针变量p向p所指向的整型变量输入一个整型值将指针变量p所指向的变量的值输出

*注意,

显示全部
相似文档