永发信息网

int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); } 请高手解释一下这段程序

答案:3  悬赏:70  手机版
解决时间 2021-04-26 13:26
  • 提问者网友:自食苦果
  • 2021-04-25 21:35
int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); } 请高手解释一下这段程序
最佳答案
  • 五星知识达人网友:封刀令
  • 2021-04-25 22:12


首先 char *s 接受一个字符型数组的首地址

并将这个首地址赋给另一个字符型指针 char*t

while(*t++);不断循环直到 *t 为‘\0’,

再将 t-1 ,这时字符指针 t 指向字符串的最后一个字符!

又因为 s 指向字符数组的首地址即字符串的首地址

所以 return(t-s) 便是返回字符数组中字符串的长度

下面是个例子:

#include "stdio.h"

int aaa(char*s)
{char*t=s;
while(*t++);
t--;
return(t-s);
}

void main()
{
int x;
char y[10]=;
x=aaa(y);
printf("x的值为:%d\n",x);
}

x的值为:3
全部回答
  • 1楼网友:底特律间谍
  • 2021-04-26 00:43
求字符串长度的。。。
当*t = '\0' 的时候循环结束
如果不为0指针后移 直到字符串结束。
  • 2楼网友:时间的尘埃
  • 2021-04-25 23:44
这是一个求字符串长度的程序。
首先定义一个指针指向字符串的首地址。
while(*t++);
就是说在*t还没到字符串末尾时t会往后。
在*t=='\0'时,t最后执行一次t++
然后返回t到s的距离。
最后将所求长度值赋给aaa方法~
意思是字符串s到其末尾'\0'中间经历的字符数。(包含'\0')
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯