问两道有关c语言字符指针的问题,请将程序每一步的意思告诉我,谢谢啦

1. 下面函数的功能是 。
sss(char *s ,char *t )
{ while((*s)&&(*t)&&(*t++== *s++)) ;
return(*s-*t) ; }
A. 求字符串的长度 B. 比较两个字符串的大小
C. 将字符串s 复制到字符串t 中 D. 将字符串s 接续到字符串t 中
2. 下列函数的功能是 。
int fun1(char * x)
{ char *y=x;
while(*y++) ;
return(y-x-1);}
A. 求字符串的长度 B. 比较两个字符串的大小
C. 将字符串X 复制到字符串Y D. 将字符串X 连接到字符串Y 后面
最新回答
继续逞强

2024-11-30 08:32:16

第一题答案:B。理由:*s与*t都是取出此时地址存储的值,while()语句里面的意思是,当指针s与t都不为空并且s指向的值等于t指向的值。。。当s或者t为空或者t与s指向的值不同时,while()结束,返回此时s指向的值减去t指向的值,所以为比较两个字符串的大小;
第二题答案:A。理由:x的地址赋值给y,while()语句的功能就是当y不为空时自加1,当y为空时退出while()循环,此时y为字符串尾数,减去x减去1就是字符串长度
寄信给风

2024-11-30 08:38:17

char *toc(const char *a, const char *b, char *c)
{
char *pc = c;

if (a == NULL || b == NULL || c == NULL)
return c;

while(*a != '\0' && *b != '\0')
{
*c = (*a > *b) ? *a : *b;
a++;
b++;
c++;
}
*c = '\0';

return pc;
}
︸世态炎凉

2024-11-30 08:29:51

1,B
解释如下:while语句(*s)&&(*t)&&(*t++==*s++)一句,当s串与t串不为NULL时,并且当他们对应位置上的字符不相等时,返回(*s-*t);
若结果大于0;串一大于串二;
若结果为零,两串相等
类推;
2,A
解释如下:
程序将串x头指针赋值给y指针,然后对y运算,当y指向的字符为空时,返回
返回(y-x-1)求串长;
鸢尾*

2024-11-30 08:21:38

出错的地方:
for(i=0;s2[i]!='\0';i++)
{p[j+1]=&s2[i];
j=j+1;}
原因:在上一个循环中i已经指向了下一个填充的地方,而j+1则让这个地方跳过去了,该地址没有被更新,于是,最终程序访问了非法的地址。

改正:

p[j]=&s2[i];
季沫怡

2024-11-30 08:06:31

1.B
2.A