这是形参与实参的问题,也可以说是局部变量的问题。
你在调用函数的时候,只是把P[i][j]的值赋给了A,你在子函数中修改的却只是A的值,并没有真正的修改到P[i][j]的值,所以当你的子函数调用完成后,你的P[i][j]的值根本就没有变化。
想要达到你的要求,就需要使用指针或者全局变量来做了,在你的程序中,我不建议使用全局变量,所以就要使用指针来做了。
下面是给你修改的程序,你看看。
#include "stdio.h"
#include "math.h"
void Swap(int A);
main()
{
int P[2][8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
int C[2][8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
int i,j;
for(i=0;i<2;i++)
for(j=0;j<8;j++)
{
if(C[i][j]%4==0)
{
printf("%x\t",P[i][j]);
Swap(&P[i][j]); //传递指针
printf("%x\n",P[i][j]);
}
}
}
void Swap(int* A)
{
int c,d;
c=*A/16;
d=*A%16;
*A=d*16+c
}
那是因为函数形参改变是不会影响实参的值的,如果你想改变实参的值,函数形参就要改用地址才行,即将Swap()里的int A改成int *A