例如:
int arr[ 10 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ;
int *p = arr ;
int *q = &arr[0] ;
1. p 和 q 表示的都是一样的,表示的都是数组首元素的地址,只是表现形式不同而已;
2. printf ( " %d \n" , arr[0] ); // 数组第一个元素
printf ( " %d \n" , *p ); // 数组第一个元素
printf ( " %d \n" , p[0] ); //数组第一个元素
printf ( " %d \n" , &arr + 1); //加了整个数组
printf ( " %d \n" , &p + 1); //加了整个数组
① 对于指针来说,加1,其实是加上类型的大小,比如,整型加1就是加4个字节,字符型加1就是加1个字节,双精度浮点型加1就是加8个字节,其他类型类似。因此,指针减1,其实就是减去类型的大小,即整型减1就是减4个字节,字符型减1就是减1个字节,双精度浮点型减1就是减8个字节,其他类型类似。
注意:指针乘法、除法、取余都不行。
② 指针 - 指针,代表的就是这两个指针中间隔了多少个格子,前提是这两个指针必须在同一个数组内。
注意:指针 + 指针无意义,加起来是不存在的。
③ 普通变量在栈空间内,地址由大到小存储,而数组,申请一块连续内存,从小到大分配。
④ 特殊形式书写:
printf ( " %d \n" , 7 [arr] ); // 7 [arr] 相当于就是 *(arr +7)
printf ( " %d \n" , 7 [p] ); // 7 [p] 相当于就是 *(p +7)
注意: arr[0] === *p === *(arr+0)
⑤ 对于指针++,指针--,其实是和指针+1、指针-1一个意思。
⑥ 程序中国访问数组元素时,有
下标法:arr[ i ]
指针法:*(arr + i) 或者 *(p + i) ,其中arr是数组名,p是指向数组元素的指针变量,其初值
p=a。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)