




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 指针指针6.1 6.1 地址和指针变量地址和指针变量 6 6.2 .2 指针数组指针数组6 6.3.3 字符数组与字符串字符数组与字符串 6 6.4 .4 函数指针函数指针6 6.5 .5 动态存储动态存储 指针变量与间址访问指针变量与间址访问 指针类型变量能够存放对象地址的变量,简称“指针变量” 指针地址,用于间接访问内存单元访问变量的方式:访问变量的方式:直接访问直接访问利用变量名进行访问间接访问间接访问通过指针变量访问该变量的值 指针变量与间址访问指针变量与间址访问 指针类型变量能够存放对象地址的变量,简称“指针变量” 例如: int a , b ; int *p1 ,
2、*p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ; 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4i
3、nt b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE0 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ;
4、a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE0 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF4 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地
5、址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF4*p1*p1指针p1所指的对象 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p
6、1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF40X0066FDF0*p1 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2
7、;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF4*p1*p2*p2指针p2所指的对象0X0066FDF0 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ;/ *p1 = 10 b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FD
8、F40X0066FDF010*p1*p2 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ;/ *p2 = 20 a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF40X0066FDF010*p1*p220 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址
9、的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF40X0066FDF010*p1*p220 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; in
10、t *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a = *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF40X0066FDF030*p1*p220 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0例如: int a , b ; int *p1 , *p2 ; p1 = &a ; p2 = &b ; a = 10 ; b = 20 ; a =
11、 *p1 + *p2 ;int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF40X0066FDF030*p1*p220间址访问 读出变量 的地址值 查找该地址的存储单元 用关联类型解释并读出数据 指针变量与间址访问指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” int a 0X0066FDF4int b 0X0066FDF0int *p2 0X0066FDE4int *p1 0X0066FDE00X0066FDF40X0066FDF030*p1*p220int *p1int *p2int aint b*p1*p2类型 * 标识符 ;
12、 指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” 指针变量名类型 * 标识符 ; 指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” 指针类型说明符类型 * 标识符 ; 指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” 指针所指对象的类型(指针的关联)类型 * 标识符 ; 指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” 例如int * iptr ; / iptr 是指向整型对象的指针,可以存放一个整型变量的地址 char * s ;/ s 是指向字符对象的指针double * dPtr ;/ dPtr 是
13、指向浮点对象的指针类型 * 标识符 ; 指针变量与间址访问指针类型变量能够存放对象地址的变量,简称“指针变量” / 空指针:int * iPtr = 0 ;char * s = NULL ;double * dPtr = NULL ;iPtrsdPtr 指针变量与间址访问int i = 1 ;int * iPtr1 , * iPtr2 ;char * cPtr ;iPtr1 = & i ; / 合法iPtr2 = iPtr1 ; / 合法iPtr2 = i ;/ 非法, i 不是 int * 对象cPtr = iPtr1 ; / 非法, iPtr1 不是 char *对象i = iPt
14、r1;/ 非法,iPtr1 不是 int对象 指针变量与间址访问 取地址操作 间址访问操作 例如 short int a = 3 , b = 4 ;float c = 4.5 , d = 8.6 ;char e = x , f = y ; int * pa = &a , * pb = &b ;float *pc = &c , *pd = &d ;char * pe = &e , *pf = &f ; abcdef344.58.6 指针变量与间址访问abcdef344.58.6papbpcpdpepf344.58.6xy/ 例 间址访问对象# in
15、clude using namespace std ;int main ( ) int i , * p ; p = & i ; * p = 5 ; cout i endl ; cout * p endl ; cout p endl ; cout & i endl ;/ 例 间址访问对象# includeusing namespace std ;int main ( ) int i , * p ; p = & i ; * p = 5 ; cout i endl ; cout * p endl ; cout p endl ; cout & i endl ;/通过指针
16、变量间指访问对象/ 例 间址访问对象# includeusing namespace std ;int main ( ) int i , * p ; p = & i ; * p = 5 ; cout i endl ; cout * p endl ; cout p endl ; cout & i endl ;用名访问对象/ 例 间址访问对象# includeusing namespace std ;int main ( ) int i , * p ; p = & i ; * p = 5 ; cout i endl ; cout * p endl ; cout p endl
17、 ; cout & i endl ;通过指针变量间址访问对象/ 例 间址访问对象# includeusing namespace std ;int main ( ) int i , * p ; p = & i ; * p = 5 ; cout i endl ; cout * p endl ; cout p endl ; cout & i endl ;指针变量的值对象 i 的地址/ 例 间址访问对象# includeusing namespace std ;int main ( ) int i , * p ; p = & i ; * p = 5 ; cout i
18、endl ; cout * p endl ; cout p endl ; cout & i endl ;取对象 i 的直接地址值/ 例 交换指针值# includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pint i1=10, i2 = 20,
19、*p1, *p2, *p ;/ 例 交换指针值# includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp1=&i1; p2=&i2;* p1* p2/ 例 交换指针值# includeusing namespace std ;int
20、main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pcout *p1= *p1 t *p2= *p2 endl ;* p1* p2Output*p1 = 10*p2 = 20/ 例 交换指针值# includeusing namespace std ;int main () int i1=10, i2 = 20,
21、 *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp=p1;* p1* p2* pOutput*p1 = 10*p2 = 20/ 例 交换指针值# includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1=
22、*p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp1=p2;* p2* pOutput*p1 = 10*p2 = 20/ 例 交换指针值#includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1
23、 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp1=p2;* p1* p* p2Output*p1 = 10*p2 = 20/ 例 交换指针值#includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp2=p;* p1* p
24、* p2Output*p1 = 10*p2 = 20/ 例 交换指针值#includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp2=p;* p1* pOutput *p1 = 10*p2 = 20/ 例 交换指针值#includeusing names
25、pace std ;int main () int i1=10, i2 = 20, *p1, *p2, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 pp2=p;* p1* p* p2Output *p1 = 10*p2 = 20/ 例 交换指针值#includeusing namespace std ;int main () int i1=10, i2 = 20, *p1, *p2
26、, *p ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; p=p1; p1=p2; p2=p; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 p* p1* p* p2cout *p1= *p1 t *p2= *p2 endl ;*p1 = 20*p2 = 10Output *p1 = 10*p2 = 20/例 交换指针所指对象的值#includeusing namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2
27、 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2 iint i1=10, i2 = 20, i , *p1, *p2 ;/例 交换指针所指对象的值#includeusing namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2=
28、 *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2p1=&i1; p2=&i2;* p1* p2 i/例 交换指针所指对象的值#includeusing namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t
29、 *p2= *p2 endl ; p1 10 i1 p2 20 i2cout *p1= *p1 t *p2= *p2 endl ;* p1* p2 iOutput*p1 = 10*p2 = 20/例 交换指针所指对象的值#includeusing namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t *p2= *p2 endl ; p1
30、10 i1 p2 20 i2i=*p1;* p1* p2 i10Output*p1 = 10*p2 = 20/例 交换指针所指对象的值#includeusing namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t *p2= *p2 endl ; p1 10 i1 p2 20 i2*p1=*p2;* p1* p210i 20 Output
31、*p1 = 10*p2 = 20/例 交换指针所指对象的值#includeusing namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t *p2= *p2 endl ; p1 20 i1 p2 20 i2*p2=i;10i* p1* p2 10 Output*p1 = 10*p2 = 20/例 交换指针所指对象的值#includeusi
32、ng namespace std ;int main () int i1=10, i2 = 20, i , *p1, *p2 ; p1=&i1; p2=&i2; cout *p1= *p1 t *p2= *p2 endl ; i=*p1; *p1=*p2; *p2=i; cout *p1= *p1 t *p2= *p2 endl ; p1 20 i1 p2 10 i2cout *p1= *p1 t *p2= *p2 endl ;*p1 = 20*p2 = 1010i* p1* p2Output*p1 = 10*p2 = 20例如 int * * p2 ; int * p1 ;
33、int i = 3 ; p1 = & i ; p2 = & p1 ;指向指针的指针例如 int * * p2 ; int * p1 ; int i = 3 ; p1 = & i ; p2 = & p1 ; p2指向指针的指针例如 int * * p2 ; int * p1 ; int i = 3 ; p1 = & i ; p2 = & p1 ; p2 p1指向指针的指针例如 int * * p2 ; int * p1 ; int i = 3 ; p1 = & i ; p2 = & p1 ; p2 p1 3 i指向指针的指针例如 i
34、nt * * p2 ; int * p1 ; int i = 3 ; p1 = & i ; p2 = & p1 ; p2 p1 3 i指向指针的指针 &i *p1例如 int * * p2 ; int * p1 ; int i = 3 ; p1 = & i ; p2 = & p1 ; p2 p1 3 i &i *p1指向指针的指针 &p1 *p2例如 int * * p2 ; int * p1 ; int i = 3 ; p1 = & i ; p2 = & p1 ; p2 p1 3 i &p1 *p2 &i
35、 *p1 / 非法, p2 必须取指针变量的地址 / 非法, i 不是指针指向指针的指针/ 例 #includeusing namespace std ;int main() int *p4, *p3, *p2, *p1, i = 3 ; p4 = &p3; p3 = &p2; p2 = &p1; p1=&i; cout *p4 endl ; 3 i &i p1 &p1 p2 &p2 p3 &p3 p4指向指针的指针void 指针变量能够存放任意内存地址。因为没有关联类型,编译器无法解释所指对象,程序中必须对其作强制类型转换,才可
36、以按指定类型数据使用 指针的类型转换/ 例#includeusing namespace std ;int main() int a = 65 ; int * ip ; void * vp = &a ; cout * ( int * ) vp endl ; cout * ( char * ) vp endl ; ip = ( int * ) vp ; cout ( * ip ) endl ;指针的类型转换/ 例#includeusing namespace std ;int main() int a = 65 ; int * ip ; void * vp = &a ; cout
37、 * ( int * ) vp endl ; cout * ( char * ) vp endl ; ip = ( int * ) vp ; cout ( * ip ) endl ;定义无类型指针以整变量地址初始化指针的类型转换/ 例#includeusing namespace std ;int main() int a = 65 ; int * ip ; void * vp = &a ; cout * vp endl ; cout * ( char * ) vp endl ; ip = ( int * ) vp ; cout ( * ip ) endl ;强类型转换后访问对象指针的
38、类型转换/ 例#includeusing namespace std ;int main() int a = 65 ; int * ip ; void * vp = &a ; cout * ( int * ) vp endl ; cout * vp endl ; ip = ( int * ) vp ; cout ( * ip ) endl ;转换成字符型指针指针的类型转换/ 例#includeusing namespace std ;int main() int a = 65 ; int * ip ; void * vp = &a ; cout * ( int * ) vp e
39、ndl ; cout * ( char * ) vp endl ; ip = vp ; cout ( * ip ) endl ;向整型指针赋值指针的类型转换/ 例#includeusing namespace std ;int main() int a = 65 ; int * ip ; void * vp = &a ; cout * ( int * ) vp endl ; cout * ( char * ) vp endl ; ip = ( int * ) vp ; cout ( * ip ) endl ;指针的类型转换数组指针 指针数组的元素类型是指针指针数组的元素类型是指针 指针
40、数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型类型 * 标识符标识符 表达式表达式 ; 指针数组的元素类型是指针指针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型 * 标识符标识符 ; 数组名数组名 指针数组的元素类型是指针指针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型 * 标识符 表达式表达式 ; 数组长度数组长度 指针数组的元素类型是指针指
41、针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型类型 * 标识符 表达式 ; 数组元素类型数组元素类型 指针数组的元素类型是指针指针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型类型 * 标识符标识符 表达式表达式 ; 例如:例如:int * pi 3 ;double * pf 5 ;char * ps 10 ; 指针数组的元素类型是指针指针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象
42、的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型类型 * 标识符标识符 表达式表达式 ; 例如:例如:double * pf 5 ;char * ps 10 ;/数组元素是关联类型为整型的指针数组元素是关联类型为整型的指针 指针数组的元素类型是指针指针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型类型 * 标识符标识符 表达式表达式 ; 例如:例如:int * pi 3 ;char * ps 10 ;/数组元素是关联类型为整型的指针数组元素是关联类型为整型的指针/数组元素是关联类型为浮
43、点型的指针数组元素是关联类型为浮点型的指针 指针数组的元素类型是指针指针数组的元素类型是指针 指针数组的元素存放对象的地址指针数组的元素存放对象的地址6.2 6.2 指针数组指针数组说明形式为:说明形式为:类型类型 * 标识符标识符 表达式表达式 ; 例如:例如:int * pi 3 ;double * pf 5 ;/数组元素是关联类型为整型的指针数组元素是关联类型为整型的指针/数组元素是关联类型为浮点型的指针数组元素是关联类型为浮点型的指针/数组元素是关联类型为字符型的指针数组元素是关联类型为字符型的指针一维数组访问一维数组访问指针变量与数组指针变量与数组 a0a1a2a3a4a5a6a7a
44、8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; int * p ;p = a ;cout *p ; p + ;cout *( p+ ) ; p += 3 ; cout &p ; 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; int * p ;p = a ;cout *p ; p + ;cout *( p+ ) ; p += 3 ; cout &p ; / a 是内存的直接地址是内存的直接地址指针变量与
45、数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ;p = a ;cout *p ; p + ;cout *( p+ ) ; p += 3 ; cout &p ; / p 是指针变量是指针变量p指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int
46、a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ;cout *p ; p + ;cout *( p+ ) ; p += 3 ; cout &p ; / p的值是的值是a0的地址的地址p0 x0065FDE4指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的
47、值是的值是a0的地址的地址cout *p ; p + ; cout *( p+ ) ; p += 3 ; cout &p ; / 间址访问,输出间址访问,输出 a0 的值的值p0 x0065FDE41指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问
48、,输出 a0 的值的值p + ;cout *( p+ ) ; p += 3 ; cout &p ; / p 指向指向 a1p0 x0065FDE4指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问,输出 a0 的值的值p + ; / p 指向指向 a
49、1cout *( p+ ) ; p += 3 ; cout &p ; p0 x0065FDE8指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问,输出 a0 的值的值p + ; / p 指向指向 a1cout *( p+ ) ; p += 3 ; c
50、out &p ; p0 x0065FDE8/ 输出输出 a1 , p 指向指向 a23指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问,输出 a0 的值的值p + ; / p 指向指向 a1cout *( p+ ) ; / 输出输出 a1 , p
51、指向指向 a2p += 3 ; cout &p ; p0 x0065FDEC指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问,输出 a0 的值的值p + ; / p 指向指向 a1cout *( p+ ) ; / 输出输出 a1 , p 指向指向
52、a2p += 3 ; cout &p ; p0 x0065FDF8/ p 指向指向 a5指针变量与数组指针变量与数组 4.1.2 一维数组访问一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问,输出 a0 的值的值p + ; / p 指向指向 a1cout *( p+ ) ; / 输出输出 a1 , p
53、 指向指向 a2p += 3 ; cout &p ; p0 x0065FDF8/ 输出输出 p 的地址的地址指针变量的地址指针变量的地址0 x0065FDE0指针变量与数组指针变量与数组 4.1.2 一维数组访问/ p 指向指向 a5一维数组访问一维数组访问a0a1a2a3a4a5a6a7a8a9a 0 x0065FDE40 x0065FDF01357900000int a 10 ; / a 是内存的直接地址是内存的直接地址int * p ; / p 是指针变量是指针变量p = a ; / p的值是的值是a0的地址的地址cout *p ; / 间址访问,输出间址访问,输出 a0 的值的
54、值p + ; / p 指向指向 a1cout *( p+ ) ; / 输出输出 a1 , p 指向指向 a2p += 3 ; / p 指向指向 a5cout &p ; / 输出输出 p 的地址的地址p0 x0065FDF40 x0065FDF8p0 x0065FDE0指针变量与数组指针变量与数组 4.1.2 一维数组访问/ 例例 测试指针数组测试指针数组 #includeusing namespace std ;int main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = &a ; pi 1 = &b ; pi 2
55、= &c ; for( int i = 0; i 3 ; i + ) cout *pi i ;4.2 4.2 指针数组指针数组6.2.1 6.2.1 指向基本数据类型的指针数组指向基本数据类型的指针数组 / 例例 测试指针数组测试指针数组#includeusing namespace std ;int main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = &a ; pi 1 = &b ; pi 2 = &c ; for( int i = 0; i 3 ; i + ) cout *pi i ;332211abc
56、4.2 4.2 指针数组指针数组6.2.1 6.2.1 指向基本数据类型的指针数组指向基本数据类型的指针数组 / 例例 测试指针数组测试指针数组#includeusing namespace std ;int main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = &a ; pi 1 = &b ; pi 2 = &c ; for( int i = 0; i 3 ; i + ) cout *pi i ;&a&b&c332211abc4.2 4.2 指针数组指针数组6.2.1 6.2.1 指向基本数
57、据类型的指针数组指向基本数据类型的指针数组 / 例例 测试指针数组测试指针数组#includeusing namespace std ;int main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = &a ; pi 1 = &b ; pi 2 = &c ; for( int i = 0; i 3 ; i + ) cout *pi i ;&a&b&c332211abc11 22 334.2 4.2 指针数组指针数组6.2.1 6.2.1 指向基本数据类型的指针数组指向基本数据类型的指针数组 / 例
58、例#includeusing namespace std ;int main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = & aa ; pf 1 = & bb ; pf 2 = & cc ; for ( int i = 0 ; i 3 ; i + ) for ( int j = 0 ; j 2 ; j + ) cout * ( * pf i + j ) ; cout endl ; &aa&
59、bb&ccaa0 aa1bb0 bb1cc0 cc1 5.5 6.6 3.3 4.4 1.1 2.2aabbcc4.2 4.2 指针数组指针数组6.2.2 6.2.2 指向数组的指针数组指向数组的指针数组4.2 4.2 指针数组指针数组/ 例例#includeusing namespace std ;int main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * ) 2 ; pf 0 = & aa ; pf 1 = & bb ; pf 2 =
60、 & cc ; for ( int i = 0 ; i 3 ; i + ) for ( int j = 0 ; j 2 ; j + ) cout * ( * pf i + j ) ; cout endl ; pf 是长度为是长度为3的数组的数组&aa&bb&ccaa0 aa1bb0 bb1cc0 cc1 5.5 6.6 3.3 4.4 1.1 2.2aabbcc6.2.2 6.2.2 指向数组的指针数组指向数组的指针数组/ 4-7#includeusing namespace std ;int main() double aa 2 = 1.1, 2.2 ; do
61、uble bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( ) 2 ; pf 0 = & aa ; pf 1 = & bb ; pf 2 = & cc ; for ( int i = 0 ; i 3 ; i + ) for ( int j = 0 ; j 2 ; j + ) cout * ( * pf i + j ) ; cout endl ; 数组元素是指针数组元素是指针&aa&bb&ccaa0 aa1bb0 bb1cc0 cc1 5.5 6.6 3.3 4.4 1.1 2.2aabbcc4
62、.2 4.2 指针数组指针数组6.2.2 6.2.2 指向数组的指针数组指向数组的指针数组/ 例例#includeusing namespace std ;int main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; ; pf 0 = & aa ; pf 1 = & bb ; pf 2 = & cc ; for ( int i = 0 ; i 3 ; i + ) for ( int j = 0 ; j 2 ; j + ) cout * ( * pf i + j ) ; cout endl ; 指针的关联类型指针的关联类型是长度为是长度为2的浮点数组的浮点数组&aa&bb&ccaa0 aa1bb0 bb1cc0 cc1 5.5 6.6 3.3 4.4 1.1 2.2aabbcc4.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据库分布式架构设计试题及答案
- 入侵防御设备管理制度
- 关于公款使用管理制度
- 叉车司机岗位管理制度
- 工厂车辆设备管理制度
- 小区防冻物质管理制度
- 印染大中小修管理制度
- 停电操作单人管理制度
- 垃圾坑精细化管理制度
- 行政组织理论对接实践的试题及答案
- 地理-美国 课件-2024-2025学年人教版七年级下册地理
- GB/T 30134-2025冷库管理规范
- 2025年安徽省合肥八中高考最后一卷地理试题及答案
- 安徽省合肥市45中学2025届七年级数学第二学期期末监测模拟试题含解析
- 中学生成就目标导向下的学习满意度影响机制探讨
- 【课件】2025届高考英语最后一课课件
- 预防医学知识试题及答案汇编
- 初中化学教师招聘考试试题及参考答案
- 山塘租赁合同协议书
- 2025-2030年中国聚脲涂料行业市场现状供需分析及投资评估规划分析研究报告
- 地七年级下册全册知识要点总复习-2024-2025学年七年级地理教学课件(人教版2024)
评论
0/150
提交评论