今天看了指针中数组部分的数字转置的问题,我花了大量时间仔细研究了其中的问题,发现了一些编程中容易出现的问题与dev的不同。
1.在DEV中,for(; ; ; )下面的语句需要用{ }包围起来。
2.地址不可以为负数! 这关系到一些算法能否实现 如:
void inv(int *x,int n)
{
int *i,*j,*p,m,c=(n-1)/2;
i=x;
j=x-1+n; /*这个题这里是难点 为什么不是n-1-x? 这样只用控制i就好了??
因为在这里 x为地址 而地址不可以为负数!!! 所以改写成j自减的形式。*/
p=x+c; /*关于这个p=x+c,可以理解为控制这个转置的钥匙 如果不想全部转置,则
需要用这个c来控制 这里c取得是中值。
如想把1,2,3,4,5,6,7,8,9,0 中前三个与后三个数转置 则c取3*/
for(;i<=p;i++,j--) /*这里用j--来控制循环 实现了不让地址为负数*/
{ /*记住在dev中要带{}*/
m=*i;
*i=*j;
*j=m;
}
return;
}