C语言:求解答,感觉答案不对啊,我觉得选C.怎么选A啊?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/19 01:04:23
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); 你理解错啦,地址相减是值这个数组所占类存大小 但指针相减是指数组元素多少 同一个数组,指针指向的是上一个元素或下一个元素 指针是指向内存地址的变量
再问: 减出来的应该是地址差,也就是那段东西占多少个字节,然后除以char型变量所占字节数才应该是字符串长度啊,因为1个char字符占1个字节,所以A恰好对了,但是觉得C更对啊
再答: char *a="123465"; char *p=a,*q=a+5; int x; x=q-p; printf("x=%d",x); 你理解错啦,地址相减是值这个数组所占类存大小 但指针相减是指数组元素多少 同一个数组,指针指向的是上一个元素或下一个元素 指针是指向内存地址的变量