当前位置:天才代写 > tutorial > C语言/C++ 教程 > C语言基本教程(四)指针、布局、连系和列举(2)

C语言基本教程(四)指针、布局、连系和列举(2)

2017-11-04 08:00 星期六 所属: C语言/C++ 教程 浏览:358

1.1.2 指针变量的引用
既然在指针变量中只能存放地点,因此,在利用中不要将一个整数赋给一指针变量。下面的赋值是不正当的:
int *ip;
ip=100;
假设
int i=200, x;
int *ip;
我们界说了两个整型变量i, x,还界说了一个指向整型数的指针变量ip。i, x中可存放整数,而ip中只能存放整型变量的地点。我们可以把i的地点赋给ip:
ip=&i;
此时指针变量ip指向整型变量i,假设变量i的地点为1800,这个赋值可形象领略为下图所示的接洽。
ip i
┏━━━┓ ┏━━━┓
┃ 1800 ╂──→ ┃ 200 ┃
┗━━━┛ ┗━━━┛
图1. 给指针变量赋值
今后我们便可以通过指针变量ip间接会见变量i,譬喻:
x=*ip;
运算符*会见以ip为地点的存贮区域,而ip中存放的是变量i的地点,因此,*ip会见的是地点为1800的存贮区域(因为是整数,实际上是从1800开始的两个字节),它就是i所占用的存贮区域,所以上面的赋值表达式等价于x=i;
别的,指针变量和一般变量一样,存放在它们之中的值是可以改变的,也就是说可以改变它们的指向,假设
int i, j, *p1, *p2;
i=’a’;
j=’b’;
p1=&i;
p2=&j;
则成立如下图所示的接洽:
p1 i
┏━━━┓ ┏━━━┓
┃ ╂──→ ┃ ‘a’ ┃
┗━━━┛ ┗━━━┛
p2 i
┏━━━┓ ┏━━━┓
┃ ╂──→ ┃ ‘b’ ┃
┗━━━┛ ┗━━━┛
图2. 赋值运算功效
这时赋值表达式:
p2=p1
就使p2与p1指向同一工具i,此时*p2就等价于i,而不是j,图2.就酿成图3.所示:
p1 i
┏━━━┓ ┏━━━┓
┃ ╂──→ ┃ ‘a’ ┃
┗━━━┛ ┌→ ┗━━━┛
p2 │ j
┏━━━┓ │ ┏━━━┓
┃ ╂─┘ ┃ ‘b’ ┃
┗━━━┛ ┗━━━┛
图3. p2=p1时的景象
假如执行如下表达式:
*p2=*p1;
则暗示把p1指向的内容赋给p2所指的区域,此时图2.就酿成图4.所示
p1 i
┏━━━┓ ┏━━━┓
┃ ╂──→ ┃ ‘a’ ┃
┗━━━┛ ┗━━━┛
p2 j
┏━━━┓ ┏━━━┓
┃ ╂──→ ┃ ‘a’ ┃
┗━━━┛ ┗━━━┛
图4. *p2=*p1时的景象
通过指针会见它所指向的一个变量是以间接会见的形式举办的,所以比直接会见一个变量要费时间,并且不直观,因为通过指针要会见哪一个变量,取决于指针的值(即指向),譬喻"*p2=*p1;"实际上就是"j=i;",前者不只速度慢并且目标不明。但由于指针是变量, 我们可以通过改变它们的指向,以间接会见差异的变量,这给措施员带来机动性,也使措施代码编写得更为简捷和有效。
指针变量可呈此刻表达式中,设int x, y *px=&x;
指针变量px指向整数x,则*px可呈此刻x能呈现的任那里所。譬喻:
y=*px+5; /*暗示把x的内容加5并赋给y*/
y=++*px; /*px的内容加上1之后赋给y [++*px相当于++(px)]*/
y=*px++; /*相当于y=*px; px++*/

 

    关键字:

天才代写-代写联系方式