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

请问一个C语言的有关问题

2012-04-21 
请教一个C语言的问题代码 如下char *string iphone5int *p (int *)stringp+1printf(输出:%s,p

请教一个C语言的问题
代码 如下

  char *string = "iphone5";

  int *p = (int *)string;

  p+=1;

  printf("输出:%s",p);

上面最后输出的结果是ne5(没有加p+=1;输出的是iphone5)。

请问该如何理解呢,int *p = (int *)string;是指针强制转换,转换后影响的是运算的什么呢?

求详细指教,不是很明了,模模糊糊- - 。。。

3Q

[解决办法]

C/C++ code
 int *p = (int *)string;  p+=1; //*p为四个字节,加一后是后移了4个字节,指向n,就输出ne1
[解决办法]
本人的理解:
首先string指向的是一个地址。指针强制转换后,p也指向string所指向的指针。string是char型的,而char型只占一个字节;p是int型的,占4个字节。执行p+=1后,p所指向的地址就加4了,也就指向了从“n”开始的字符了,所以printf("输出:%s",p);输出从“n”开始,到“\0”结束的字符,也就是“ne5”了。
[解决办法]
对指针
Type *p;
作整数加法运算p+n实质上返回
(p指向的地址)+n*sizeof(Type)

热点排行