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 不代表越界,简单指针算术而已。