C语言关于指针的问题
为什么那行注释掉的语句不行?
如要要行注释掉的运行要怎么改?
#include "stdio.h"
#define N 4
main ()
{
int i=0;
char a[N],t,*p,*q;
printf("请输入四个字符:");
for (i=0;iscanf("%c",&a[i]);
printf("原样输出:");
for (i=0;iprintf("%c",a[i]);
for(p=a,q=&a[N-1];q-p>=0;q--,p++)
/*for(*p=a[0],*q=a[N-1];*q-*p>=0;*q--,*p++)*/
{
t=*p;
*p=*q;
*q=t;
}
printf("\n");
printf("逆序输出:");
for (i=0;iprintf("%c",a[i]);
注释的上一行那种可以运行,注释的那行你解引用了,但是p和q没有指向数组元素,要在前面加上p=a
q=&a[N-1]但没有必要用注释的那一行,那一行对指针解引用了直接操作的是变量,注释上一行可以借助指针的运算就能解决你这题,
p和q还没有指向任何空间,*p = a[0]会崩溃掉的
注释掉的要修改对,就是你现在使用的代码。