char IslowToBigCase(char c)
{
if (c>=”a”&&c<=”z”)
{
return c+”A”-“a”;
}
return c;
}
BOOL HexStrToBigCase(IN OUT char*szHexStr)
{
DWORD ndHexLen=strlen(szHexStr);
for (DWORD i=0;i<ndHexLen;i++)
{
szHexStr[i]=IslowToBigCase(szHexStr[i]);
}
return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
char s1[]=”sfgfgfgfdgfdgf12″;
HexStrToBigCase(s1);
printf(“x=%s\n”,s1);
getchar();
return 0;
}
问一下 HexStrToBigCase这个函数既没用函数返回值返回,也没用引用传参,printf(“x=%s\n”,s1)这句的s1怎么就被改变了呢?
{
if (c>=”a”&&c<=”z”)
{
return c+”A”-“a”;
}
return c;
}
BOOL HexStrToBigCase(IN OUT char*szHexStr)
{
DWORD ndHexLen=strlen(szHexStr);
for (DWORD i=0;i<ndHexLen;i++)
{
szHexStr[i]=IslowToBigCase(szHexStr[i]);
}
return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
char s1[]=”sfgfgfgfdgfdgf12″;
HexStrToBigCase(s1);
printf(“x=%s\n”,s1);
getchar();
return 0;
}
问一下 HexStrToBigCase这个函数既没用函数返回值返回,也没用引用传参,printf(“x=%s\n”,s1)这句的s1怎么就被改变了呢?
解决方案
20
原因是你需要改变的仅仅只是指针所指向的区域的值,而不是指针本身(也就是改变指针的指向),一级指针足已
当需要改变指针的指向的时候需要传入一级指针的引用或二级指针或返回值接收
当需要改变指针的指向的时候需要传入一级指针的引用或二级指针或返回值接收
20
你参数传入的是指针,可以在函数中修改指针指向的值,这与引用的原理相似