读书人

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

发布时间: 2012-04-21 14:34:44 作者: rapoo

请教一个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)

读书人网 >C语言

热点推荐