作业帮 > 综合 > 作业

C语言:求解答,感觉答案不对啊,我觉得选C.怎么选A啊?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/08 08:38:53
C语言:求解答,感觉答案不对啊,我觉得选C.怎么选A啊?

t-s是两个地址相减,减出来的应该是一个地址差啊,应该选C才对啊,怎么选A?


编写了代码:

#include<stdio.h>
#include<string.h>
int main()
{
int fun(char *s);
char a[20]="123456";
printf("%d",fun(a));

 

}

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

 

可见A明显不对啊,如果是字符串长度,那么应该输出6啊

字符占一个字节 同类型指针相减=地址之差/类型所占字节
再问: 减出来的应该是地址差,也就是那段东西占多少个字节,然后除以char型变量所占字节数才应该是字符串长度啊,因为1个char字符占1个字节,所以A恰好对了,但是觉得C更对啊
再答: char *a="123465"; char *p=a,*q=a+5; int x; x=q-p; printf("x=%d",x); 你理解错啦,地址相减是值这个数组所占类存大小 但指针相减是指数组元素多少 同一个数组,指针指向的是上一个元素或下一个元素 指针是指向内存地址的变量