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