谁能解释一下这段C程序(新手求教)

来源:百度知道 编辑:UC知道 时间:2024/06/01 07:06:16
int fun(char *x)
{ char *y=x
while(*y++);
return y-x-1;
}
本人是C语言新手,最好能解释的详细一点,谢谢各位了!

定义了一个子函数,在main中可以调用这个函数实现此函数所实现的功能。
1。首先函数有个类型就是返回类型,int 型
函数名就是fun,fun函数中带有一个指向字符的指针型的形参x,在主函数main中调用时就要传入一个指向字符的指针型的实参。
2。在函数体中,首先定义了一个向字符的指针型变量y,并将传过来的x的值赋给y;
3。while(*y++);
while循环,条件是指针y指向空间所存放内容(此处是个字符)。随着y的自加,指针y指向空间也不断的依一个字符所占的空间大小在移动,空间的内容肯定也不停的在变化,当指针y指向空间没有内容时,退出while循环。
4。return y-x-1,返回y-x-1,即为循环中所经过的空间的个数。因为字符型数据在存储时占一个内存空间。

这个子函数能计算一下未知字符数组的大小

这是一段定义函数的代码,返回值类型为整型,接受一个字符型参变量,X为传递变量的指针,Y是一个用来存储字符型变量地址的指针变量, char *y=x
把Y指向了指针X的地址,while(*y++); 是*(Y++),单看函数似乎是要求Y与X的末地址差

函数有一个参数 *x 他是一个指针,代表一个地址
函数中定义了一个指针, 首先将传递进来的指针地址赋给函数中定义的临时指针
然后while循环 当*y++一直加到*y等于0(*y为假)的时候,循环停止
然后返回y-x-1是x这个地址多表示的字符串的长度(不为0的值的个数);
y加过了多少,x表示的字符串就有多长 减1是因为最后当*y等于零的时候y又加了一次
(y++:当执行到y++的时候,首先y的值没有加,当y++执行完之后,y再加1)