码迷,mamicode.com
首页 > 移动开发 > 详细

为学IOS,进击中...之C语言指针练习

时间:2015-07-29 19:50:20      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:c语言指针练习

使用用指针,给你数组 int a[] = {4,34,32,13,15,66};(a + 1),输出*a + 1,*(ptr1 - 1),*ptr2);并给出求解过程.


#include <stdio.h>

int main(int argc, char const *argv[])

{

int a[] = {4,34,32,13,15,66};

int *ptr1 = (int *)(&a + 1); 

/*

   (&a+1)代表储存数组a[]内存地址的后面一块内存的地址,*(&a+1)代表对a[]数组后面的那个地址取值,ptr1代表此值的地址.

后面输出的 (ptr1 - 1) 是又回到了数组a[]本身的内存地址内,而且是内部最后一个小的内存地址,*(ptr1 - 1)是取出这个值   

*/

int *ptr2 = (int *)&a + 1;

printf("%d %d %d %d\n",*(a + 1),*a + 1,*(ptr1 - 1),*ptr2);

/*   

(a+1)是在数组a[]内部 存储a[0]的地址到紧挨着的a[1]的地址,依然在a[]这个大的空间内,相当数组的下标从0+1.  *(a+1)是取出对应地址内的数值

*a + 1是先取出地址a内存储的值,然后这个值+1,

*/

return 0;

/*此函数输出的结果:

imacdeiMac-18:desktop imac$ cc zhizhenzuoye.c

imacdeiMac-18:desktop imac$ ./a.out

34 5 66 34

*/

}


为学IOS,进击中...之C语言指针练习

标签:c语言指针练习

原文地址:http://10577665.blog.51cto.com/10567665/1679565

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!