首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串相减到底如何理解

2012-02-17 
字符串相减到底怎么理解char *src duanchangzhi char *dest changzhi printf(%d,dest - src )

字符串相减到底怎么理解
char *src = "duanchangzhi" ; 

char *dest = "changzhi" ;
 
printf("%d",dest - src ) 
怎么=13,好像是src的字符的个数
怎么解释呢


[解决办法]
这不是字符串相减,而是两个指针相减,得到打针间元素的个数.
[解决办法]
1 指针减操作的意义是两个操作数指针间的元素个数,要求指针类型一致,否则减操作没有意义。
[解决办法]
关于怎样理解,我觉着:
首先必须理解常量存储(需了解一点编译器)。
该例中常量区分布:
...
xxxx : duanchangzhi ;注意多一个'\0'字符
yyyy : changzhi ;
...

假定xxxx和yyyy是地址,那src就等于xxxx,dest就等于yyyy
dest - src 就相当于 yyyy - xxxx
你说等于多少呢?好理解了吧。(注意:char占用1byte内存)

呵呵。
[解决办法]

如下图~
如果两个字符串在内存中是邻接的
src dest
↓ ↓
+----------------+-------------+------------+
| "duanchangzhi" | "changzhi" | |
+----------------+-------------+------------+
那么 dest-src 的结果就是src指向的字符串的长度

但如果不是相邻接的
则两个指针间的距离就不一定是src字符串的长度了
[解决办法]
楼上的都是正解
这样的操作只能作为试验。呵呵

热点排行
Bad Request.