</p> 轨范发生如下形式的二项式系数三角形:5 o* a) g' r; V$ q, F+ P) L6 j9 G/ g
1
8 V& z$ a- Y/ i2 ]. B 1 1
$ w2 B+ E: _% u 1 2 1
0 O( P0 l# [# v 1 3 3 15 h, C7 O0 z9 l( Z/ O% s. a4 \
1 4 6 4 1. y6 u& g0 ]# v2 |
1 5 10 1O 5 1
( T. L! k) U$ i! B# j 1 6 15 20 15 6 1
$ S" l5 h/ _# d$ C% j7 Y1 W) k1 H 1 7 21 35 35 21 7 1
- c# Z/ W ]2 o; @2.多级指针
& B1 o( o! o" i 当指针变量pp所指的变量ip又是一种指针时,呷就是一种指向指针的指针,称指针变量如是一种多级指针。界说指向指针变量的指针变量的一般形式为
+ t6 o9 ? M) h 数据类型 * *指针变量名;
( y/ n) O& b) c, v 例如:- C' q4 l$ B8 M6 a
int * *pp,*ip ,i ;3 [& H* s4 M4 R/ t% M
ip=&i;
4 ], H7 `: t; |8 p, p, ]5 H pp=&ip;0 q L% C+ V% k5 C" @0 k; C
界说声名pp是指向指针的指针变量;它能指向的是这样一种指针对象,该指针对象是能指向int型的指针变量。如上述代码让pp指向指针变量ip,中指向整型变量i。
# X* y& E# U) F7 ^' w1 D3 j. s 多级指针与指针数组有慎密亲密的关系。若有指针数组:& P S, I& {) f+ l( q: e5 V( g2 ~
char * lines[ ]= {“ADA”,“ALGOL”,“C”,“C++”,“FORTRAN”,“PASCAL” };5 f* j' w% p1 T8 ~0 V
则lines指针数组的每个元素分袂指向以上字符串常量的首字符。在这里数组名lines可以作为它的首元素lines[0]的指针,lines+k是元素 lines[k]的指针,因为lines[k] 自己也是指针,所以表达式 lines+k的值是一种指针的指针。若有需要还可惹人指针变量cp,让它指向数组lines的某元素,如cp=&lines[k]。这样,cp就是指向指针型数据的指针变量。在这里,cp是指向字符指针的指针变量,它应被界说成:
; a3 c- g5 I) H5 n! z char * *cp;
0 a( E8 O4 a. Y* P, F0 M 为了界嗣魅这样的 cp,它的前面有两个*号。因为*自右向左连系,首先是“* cp”暗示 cp是指针变量,再有**cp暗示cp能指向的是某种指针类型,最后“char * *cp”暗示指针变量cp能指向字符指针数据对象。如不美观有赋值cp=& lines[l],让它指向数组元素lines[1],则* cp引用 lines[1],是一个指针,指向字符串“ALGOL”的首字符。* *cp引用lines[1][0],其值是字符'A’。下面的代码实现挨次输出指针数组lines各元素所指字符串:
8 O- X. t R. P1 N' w for(c=lines;cp Printf(“%s\n”,*cp);0 L# ~# H. d! \, E( n! E' Z
设稀有组a[]和指针数组pt[]有以下代码所示的关系:
/ X/ ]" c0 |! I- {* G3 a int a[]= {2,4,6,8,10 };( y3 a) Z( i2 w
int *pt[]={&a[3],&a[2],a[4],&a[0],&[1]};6 T0 v! G$ ^3 q; t n) q: j
int * *p;
, G% @1 w2 n+ }5 ^" Y" C9 W2 i& c 下面的代码操作指针数组pt[]和指针的指针p,遍历数组a[]: |