1、x是字符串开始的地址,y由于while中的*y++的判断,所以当循环结束的时候y指向了所求字符串结束符之后的位置,y-x表示y指向的位置与x指向的位置存储单元个数,由于y多指了一个,所以又进行了减去1的计算。由于字符串的每个存储单元的大小都是一个字节,所以return返回的恰好是x指向的字符串的长度;注:*y++等价于 *(y++)
2、选A是错误的,因为p没有明确的指向(这个函数的原意是定义一个指针变量p,然后让它所指向的单元作为中间变量以实现x和y所指向单元值的交换)。
如果把函数改成
funa( int *x, int *y )
{
int p;
p = *x; *x = *y; *y = t;
}
就可以选A了。
return就是把括号里的计算结果返回到被调用函数,这里就是函数的计算结果地址减地址,就是长度
这个函数的功能是交换地址,肯定要用指针变量咯
第一题while到字符串最后是0 也就是y指向字符串尾,但是随后y自加一
所以return里除了y减去x外还要再减一
第二题用p也一样