首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言指针的有关问题

2012-04-13 
c语言指针的问题今天有人问了我这个问题,我是从来没见过,求救啊int a[5]{1,2,3,4,5}int *ptr (int *)(

c语言指针的问题
今天有人问了我这个问题,我是从来没见过,求救啊

int a[5]={1,2,3,4,5};
int *ptr = (int *)((int)a +1);

上面怎么解释?(int)a是什么意思?

[解决办法]
不能解释结果为什么是那个,(int)a +1就是把地址强制转换成整型,那么加1就是一般的加1字节了,而不是地址的加4个字节了。

C/C++ code
int a[5]={1,2,3,4,5};00C53618  mov         dword ptr [ebp-1Ch],1  00C5361F  mov         dword ptr [ebp-18h],2  00C53626  mov         dword ptr [ebp-14h],3  00C5362D  mov         dword ptr [ebp-10h],4  00C53634  mov         dword ptr [ebp-0Ch],5      int *ptr = (int *)((int)a +1);00C5363B  lea         eax,[ebp-1Bh]  00C5363E  mov         dword ptr [ebp-28h],eax      printf("%d\n", *ptr);
[解决办法]
前几天看过这样的一个帖子,原帖好像是这个问题
C/C++ code
#include<stdio.h>int main(){  int a[]={1,2,3,4,5};  int *ptr2=(int *)((int)a+1);  int *ptr1=(int *)(&a+1);  printf("%x,%x\n",ptr1[-1],ptr2);} 

热点排行
Bad Request.