赞
踩
c语言中 指针加法(p++,p+2)
例如:int arr[10]={1,2,3}
int *p=arr;
p++;
*p=10;
在例题中的p++的意义:
有如下的三种可能性:1、加一个字节;
2、加一个单元格;
3、加一个数组;
我们做以下的分析 :
对于第一种可能性:
加一个字节的话,即在101到105中间放入解引用的10;(如图所示)
将红色部分放大4倍:
注:小端:低地址放小数据
大端:底地址放大数据
pc端为小端:则1存放的方式为,00000001
进行*p=10的步骤:
对于第二种可能性:
对于第三种可能性:
即加入一个数组,这种可能性不存在。
由上可知,p+1为加人一个单元格;
做如下的练习:
指针+-数字
#include <stdio.h>
int main()
{ int *p=(int *)1000;
printf("%d\n",p+4); 1016
printf("%d\n",(short *)p+4); 1008
printf("%d\n",(long *)p+4); 1016
printf("%d\n",(double *)p+4); 1032
printf("%d\n",(char *)p+4); 1016
printf("%d\n",(char **)p+4); 1004
printf("%d\n",(long long)p+4); 1004
}
#include <stdio.h>
int main()
{
int *p=(int *)0x2010;
printf("%x\n",p-2); 2008
printf("%x\n",(char *)p-2); 200e
printf("%x\n",(float *)p-2); 2008
printf("%x\n",(double *)p-2); 2000
printf("%x\n",(unsigned long *)p-2); 2008
printf("%x\n",(short *****)p-2); 2008
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。