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

pt[-1] = 0是什么意思啊该怎么处理

2012-02-19 
pt[-1] 0是什么意思啊?C/C++ codechar *pt strstr(fn,HTTP_PROTO1)if (pt)pt[-1] 0看一开源代码有

pt[-1] = 0是什么意思啊?

C/C++ code
        char *pt = strstr(fn,HTTP_PROTO1);        if (pt)            pt[-1] = 0;


看一开源代码有一上面的部分代码,pt[-1]不知道是想干嘛,故意越界?
有人说pt[-1]就相当与pt-1 (退一格)


[解决办法]
不清楚,但是顶。。。。
[解决办法]
是的,从字符串fn中寻找HTTP_PROTO1第一次出现的位置,就是第一次出现的前一位设为字符串结束
[解决办法]
如果pt指向fn的第0位,就会越界了
你可以看下你代码的上下文
可能查询结果一定不会指向第0位
[解决办法]
下标-1就是定义的开始位置问题。

好像之前星羽有个贴子提过。可以找找看。
[解决办法]
本意是查找fn中第一次出现HTTP_PROTO1的字符串,然后把后面的全部移除。
但是如果fn是以HTTP_PROTO1开头,那么就出现问题了。应该这样

char *pt = strstr(fn,HTTP_PROTO1);
if(pt && pt != fn)
pt[-1] = 0;

[解决办法]
2楼说得对.

pt[-1]是往前倒退一个Byte的位置.
[解决办法]
p[m]就是*(p + m)。
[解决办法]
设置结束符
[解决办法]
对了,就是将现在的指针位置向前移一个位置
[解决办法]
int array[N];
int *p = array + 1;
p[-1] = 0; // -1 index 不代表越界,简单指针算术而已。

热点排行