请教下有关C语言中指针的问题,附上一个奇怪的程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:23:35
#include <stdio.h>
main()
{char a[10]={'a','b','c','d','e','f','g','h','i','j'};
int *str=a;
str++;
printf("%c",&str);
}
虽然数组是CHAR型的,我在定义STR时用了INT的指针,在STR++时应该因为INT为四字节而移动到A【4】,指向之后的4个字节,但程序的结果输出是P,怎么想也想不通,所以请教各位大大了

打印的地方错了
#include <stdio.h>
main()
{
char a[10]={'a','b','c','d','e','f','g','h','i','j'};
int *str=(int*)a;
str++;
printf("%c",(char)(*str) );
}

程序改为:
main()
{char a[10]={'a','b','c','d','e','f','g','h','i','j'};
int *str=a;
str++;
printf("%c",*str);
}
结果:c
其中printf("%c",&str);改为 printf("%c",*str);
由于整型数据在c语言中占2字节,所以STR++时指针后移2字节,指向'c',所以结果:c