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

新手,关于指针的有关问题

2012-04-23 
新手求助,关于指针的问题代码如下:#includestdio.hint main(void){char *ptrabcdefprintf(%c,%c,*

新手求助,关于指针的问题
代码如下:
#include<stdio.h>
int main(void)
{
  char *ptr="abcdef";
  printf("%c,%c",*ptr,*ptr++);
  return 0;
}
为什么结果是:b,a
而代码改成:
#include<stdio.h>
int main(void)
{
  char *ptr="abcdef";
  printf("%c,%c",*ptr++,*ptr);
  return 0;
}
则结果为:a,a。
求高手指点
另外,编译器为code:blocks。编译如下代码:
#include<stdio.h>
int main(void)
{
  int a;
  a=2;
printf("a=%d a=%d\n" ,a++,++a);
return 0;
}
的结果为:a=3 a=4。感觉很指针的刚好相反。

[解决办法]
典型的未定义行为。
参考下面链接中的文章:
C,C++表达式求值顺序 裘老的解释
[解决办法]
*ptr++
等同于
*ptr;
ptr++
所以,你上面的代码等同于 
#include<stdio.h>
int main(void)
{
char *ptr="abcdef";
char a,b;
a=*ptr;
b=*ptr;
ptr++;
printf("%c,%c",b,a);
return 0;
}

热点排行