关于指针的小问题
#include<stdio.h>int main()
{
int a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = NULL, *q = NULL, temp;
for(p = &a, q = q + 9; p < q; p++, q--)
{ //我发现这个for并未执行
temp = *p;
*p = *q;
*q = temp;
printf("\n");
}
for(p = &a; p<a + 10; p++)
printf(" %d ", *p);
return 0;
}
//为什么只返回一行 0, 1, 2, 3, 4, 5, 6, 7, 8, 9?
请问该如何解决 for(p = &a, q = q + 9; p < q; p++, q--)
q = q + 9 是什么鬼? #include<stdio.h>
int main()
{
int a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = NULL, *q = NULL, temp;
int charge=0;
for(p = &a,q = &a,q = q + 9; p < q; p++, q--)
{ //q应该给a的地址。也可以直接给a的值,关于之前没执行,你可以通过调试看出q的地址
temp = *p; //为NULL+int*9.p始终大于q,所以不执行
*p = *q;
*q = temp;
charge++;
printf("->charge %d\n",charge);//可以看出交换了几次
}
for(p = &a; p < a + 10; p++)
printf(" %d ", *p);
printf("\n");
return 0;
} for循环的初始条件改为q=&a
页:
[1]