里面的*(a+j+1)=*(a+j)還有*(a+m)這兩句實在理解不了,當a=4,m為0時輸出4,m為1時卻輸出1,。難搞。。
#include <stdio.h>
#include <stdlib.h>
#define M 4
void fun(int *a)
{
int i,j,k,m,p;
for(i = M;i>0;i--)
{
k=*(a+M-1);
for (j=M - 1; j >=0; j--) {
*(a + j +1)= *(a + j);
}
*a = k;
for (m=0; m<M; m++)
printf("%d",*(a + m));
printf("\n");
}
}
int main(){
int a[M] = { 1,2,3,4 };
fun(a);
}
uj5u.com熱心網友回復:
*(a+j+1)=*(a+j)好像越界了,出現了*(a+4)
*(a+m)相當于a[m]
意思是列印a[0],a[1],a[2],a[3]
*(a+......)可以用a[......]代替
這樣應該會好理解一點
uj5u.com熱心網友回復:
k=*(a+M-1); //把陣列最后一個元素賦值給變數kfor (j=M - 1; j >=0; j--) {
*(a + j +1)= *(a + j); //回圈把陣列元素向后移動一位
}
*a = k; //陣列首元素的值現在是原陣列最后一位了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27677.html
標籤:C語言
下一篇:救助大神!!!!通過IP獲取局域網內設備名稱函式 gethostbyaddr() 回傳的全是bogon, 該怎么處理呢!!
