C语言选择题 第八题 char *t=s是什么意思? t-s-1 是什么意思

C语言选择题 第八题 char *t=s是什么意思? t-s-1 是什么意思?t和s不是指针吗?怎么可以做减法?

因为参数是一个指针,char *t=s;就是定义一个指向char的指针并初始化为s相同的地址,也就是指向同一对象。
地址之间是可以进行加减法运算的,两个相同类型指针之间的减法返回两指针之间的距离(char对象数),为ptrdiff_t类型,实质是int类型,再减去1就是这个距离再减1,这题答案应该是c
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-10
我看答案应该选C
s是一个字符串指针
char *t=s 把字符串指针的首地址赋给t,*t++ 先取值,再进行自增操作,t指向的地址从s一直到字符串的最后一个位置。t每次加的时候按照元素的长度来进行自增操作,由于while的判断多加了一次,故最后循环执行完毕的时候t所指向的位置应该是字符串长度最后一个位置+1。所以t-s-1 刚好是字符串的长度
指针也是一个值,当然可以做加减,t++都可以做,为什么不能做减法呢
t++ 和 t+= 元素所占字节长度 是一个意思
不懂追问
第2个回答  2017-12-05
应该选C 字符串长度
s始终指向字符串首地址
*t++ *和++是平级运算符 从右往左, 所以t指向地址最后指到字符串最后结束符 \0
如果字符串是5个,那t就指定到第6个地址
因为地址值是连续的,所以t-s-1 得到的就是长度
第3个回答  2014-06-24
char *t = s是是字符指针指向字符串s追答

那个是计算距离

第4个回答  2014-06-24
t和s是字符指针,存放的是内存的地址值