精彩百例:一维数组指针
2015-03-28 22:31
211 查看
/* filename: the point of the one-dimensional array function: inverse the array */ # include <stdio.h> void inv(int *x, int n); int main(void) { int i; /* initial the array */ int array[10] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10}; printf("The original array is:\n"); /*traverse the array*/ for(i=0; i<10; i++) { printf("array[%d] = %d\n", i, array[i]); } int *p = array; printf("%d\n", *p + 3); /*inverse the array*/ inv(array, 10); printf("The inv array is :\n"); for(i=0; i<10; i++) { printf("array[%d] = %d\n", i, array[i]); } return 0; } void inv(int *x, int n) { int *p, *i, *j; int t; int m = (n-1)/2;//m = 4 i = x;//把指针x所指向的地址发送给了i 使得i存放的是数组首元素的地址 j = x+n-1;//首元素的地址+n-1就指向了数组最后一个元素的地址,发送给了j p = x+m;//p指向的是中间的那个靠后一个元素的地址,作为一个标志位,这样使得数组分为两部分 /*交换元素位置*/ for(; i<=p; i++, j--) { t = *i; *i = *j; *j = t; } } /* p+n / a+n 表示的是a 的地址 所以*(p+n)取出的就是数组第n-1个位置的元素 也可以使用p 和这个效果是一样的 如果是*p+n可能效果就不同了 实验效果确实不同 先取出地址中的值,然后再+n所得的结果 */
result:
<img src="https://img-blog.csdn.net/20150328223140557?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG92ZWZlZWxtZTEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
相关文章推荐
- 精彩百例:一维数组,选择排序
- 一维数组、二维数组、字符数组、指针 相关的 sizeof 计算
- 学习笔记之12-指向一维数组元素的指针
- 精彩百例:函数指针
- 一维数组与指针
- C语言——数组与指针之动态分配一维和多维数组
- 从键盘输入十个整数存入一维数组中,求出其中的最大数并输出(要求用指针访问数组元素)?
- 一维数组与指针的关系
- 【C语言】12-指向一维数组元素的指针
- C语言基础-06-指向一维数组元素的指针
- 数组名做形参和一维指针没区别的验证
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 从键盘输入十个整数存入一维数组中,求出它们的和及平均值并输出(要求用指针访问数组元素)?
- 关于一维数组、二维数组、一级指针、二级指针、指针数组、数组指针、空指针、字符指针、const的个人理解
- C语言 指针与一维数组,指针遍历一维数组的多种方法
- C语言教学--一 一维数组与指针
- 数组的递进理解——由一维到多维,数组和指针的关系比较等
- 指向一维数组的指针变量和指向二维数组的指针变量---注意其指针表示
- C语音 指针 指向一维数组元素
- 再谈一维数组、二维数组与指针、数组指针