永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-04-26 13:26
int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); } 请高手解释一下这段程序
最佳答案


首先 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
全部回答
求字符串长度的。。。
当*t = '\0' 的时候循环结束
如果不为0指针后移 直到字符串结束。
这是一个求字符串长度的程序。
首先定义一个指针指向字符串的首地址。
while(*t++);
就是说在*t还没到字符串末尾时t会往后。
在*t=='\0'时,t最后执行一次t++
然后返回t到s的距离。
最后将所求长度值赋给aaa方法~
意思是字符串s到其末尾'\0'中间经历的字符数。(包含'\0')
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
看过今天皇马直播的朋友进,皇马今天输在哪,没
对保险深入了解的帮忙解答!
中国联通的3G手机卡能放在GSM制式的手机上使
艺术的美和力各是什么意思?
如果老天要从你身上拿走一样东西,你情愿拿走
惠慧美容美发怎么去啊,有知道地址的么
难道梦幻诛仙的医生好垃圾么?怎么没人欢迎的
怎么查看计算机网络端口被占用情况,哪些是可
想问一下三十万以下的越野车那个差不多?
谁有好的小窝皮肤?
appo牌MP5零件在哪里可以配到
笔记本电脑被雷击了
有什么办法可以解烦?
讲几个超冷笑话听听?
和兴街/S301(路口)怎么去啊,有知道地址的么
推荐资讯
联想Y450那个GT240M显卡的那一个有什么优缺点
吉林收音机讲鬼故事FM是多少,几点放?
PSP3000现在完美破解了么?现在入手的话可以
2009徐汇区高一期中7校联考?
江苏是不是全国山最少的省份?
这几天早上起来喉咙痛,药又卖完了,这是怎么
童鞋网址谁知道
6300用什么看书软件比较好?
怎样开通腾讯微博啊?
QQ校友申请页面无法打开
黑板上面的标语活泼,教室黑板上方的标语口号
有没有支持诺基亚5233的手机地图?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?