社区
新手乐园
帖子详情
字符串指针偏移的问题。
Maverix3
2011-11-08 09:26:34
我做WIN32编程,然后用一个LPTSTR指针连接动态内存空间,然后对这个LPTSTR++进行偏移,为啥一下子就给我偏移出了4字节。
我就算用PSTR也是一样的结果。
就算是16bit unicode也应该一次偏移2字节啊,怎么就会一下偏移4字节啊。
谢谢大家!!
...全文
236
11
打赏
收藏
字符串指针偏移的问题。
我做WIN32编程,然后用一个LPTSTR指针连接动态内存空间,然后对这个LPTSTR++进行偏移,为啥一下子就给我偏移出了4字节。 我就算用PSTR也是一样的结果。 就算是16bit unicode也应该一次偏移2字节啊,怎么就会一下偏移4字节啊。 谢谢大家!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Maverix3
2011-11-09
打赏
举报
回复
[Quote=引用 6 楼 demon__hunter 的回复:]
指针变量的类型影响着指针变量算术运算时的跨度,即指针变量+1时,指针变量的值会增加sizeof(指针所指向变量的类型)。
check是char **类型的指针变量,指向的类型是char *,so check++,check值增加sizeof(char*)
[/Quote]
[Quote=引用 10 楼 keiy 的回复:]
在32位编译器中,指针为32位(4个字节),所以它+1就会移动4个字节
LPTSTR *check=new LPTSTR[10];
check++;
如果你一定要它移动2个字节,可以
(char *)check=(char *)check+2;
但这样应该没什么意义
[/Quote]
[Quote=引用 6 楼 demon__hunter 的回复:]
指针变量的类型影响着指针变量算术运算时的跨度,即指针变量+1时,指针变量的值会增加sizeof(指针所指向变量的类型)。
check是char **类型的指针变量,指向的类型是char *,so check++,check值增加sizeof(char*)
[/Quote]
谢谢大家,问题解决了。
我改成LPTSTR check=new TCHAR[10]就没事了。
结贴给分了。
柯本
2011-11-08
打赏
举报
回复
在32位编译器中,指针为32位(4个字节),所以它+1就会移动4个字节
LPTSTR *check=new LPTSTR[10];
check++;
如果你一定要它移动2个字节,可以
(char *)check=(char *)check+2;
但这样应该没什么意义
nickwu1220
2011-11-08
打赏
举报
回复
[Quote=引用 7 楼 maverix3 的回复:]
引用 5 楼 demon__hunter 的回复:
char **check=new char*[10]
check++
不是移动4个字节吗?
我就是想知道为啥移动四个字节,然后怎样才能移动两个字节。
[/Quote]
一个指针占4个字节啊
nickwu1220
2011-11-08
打赏
举报
回复
check是指针的指针,你申请了一个数组,数组类型是char*,check++当然是移动4个字节
Maverix3
2011-11-08
打赏
举报
回复
[Quote=引用 5 楼 demon__hunter 的回复:]
char **check=new char*[10]
check++
不是移动4个字节吗?
[/Quote]
我就是想知道为啥移动四个字节,然后怎样才能移动两个字节。
机智的呆呆
2011-11-08
打赏
举报
回复
指针变量的类型影响着指针变量算术运算时的跨度,即指针变量+1时,指针变量的值会增加sizeof(指针所指向变量的类型)。
check是char **类型的指针变量,指向的类型是char *,so check++,check值增加sizeof(char*)
机智的呆呆
2011-11-08
打赏
举报
回复
char **check=new char*[10]
check++
不是移动4个字节吗?
Maverix3
2011-11-08
打赏
举报
回复
[Quote=引用 3 楼 demon__hunter 的回复:]
引用 2 楼 maverix3 的回复:
引用 1 楼 demon__hunter 的回复:
方便的话贴代码吧
LPTSTR *check=new LPTSTR[10];
check++;
头文件里使用了UNICODE
LPTSTR 是个指针啊
[/Quote]
所以呢?
机智的呆呆
2011-11-08
打赏
举报
回复
[Quote=引用 2 楼 maverix3 的回复:]
引用 1 楼 demon__hunter 的回复:
方便的话贴代码吧
LPTSTR *check=new LPTSTR[10];
check++;
头文件里使用了UNICODE
[/Quote]
LPTSTR 是个指针啊
Maverix3
2011-11-08
打赏
举报
回复
[Quote=引用 1 楼 demon__hunter 的回复:]
方便的话贴代码吧
[/Quote]
LPTSTR *check=new LPTSTR[10];
check++;
头文件里使用了UNICODE
机智的呆呆
2011-11-08
打赏
举报
回复
方便的话贴代码吧
游戏逆向入门课程(游戏数据分析部分)
02.CE找人物基址及人物属性
偏移
03.OD找人物基址及人物属性
偏移
04.创建MFC DLL项目 05.代码实现输出人物信息 06.发包函数概述 07.怎么看待重写的发包函数 08.普通发包...
指针
与
字符串
1.
字符串
可以看成一个无名字符数组,
字符串
常量本身就是一个地址 printf("%p\n"...2.给
指针
变量赋予
字符串
常量的首地址 1)既然
字符串
常量可以看成一个无名数组,那么就可以把指向...
C语言
字符串
指针
,
指针
作为函数返回值(
指针
函数),二级
指针
,空
指针
,void
指针
C语言中
指针
还是
字符串
指针
等,不仅有数组,还有
字符串
,
指针
函数
【C++
指针
偏移
问题
】
练习选择排序遇到的
指针
偏移
问题
问题
描述 数组首地址
偏移
a+1与&a+1效果不同,前者是
指针
指向数组中下一元素(数组元素地址
指针
),后者是指向下一数组(数组
指针
) //数组元素
偏移
int main() { int a[]={5,...
指针
偏移
问题
int *p = (int*)100 p是int类型的
指针
,它的意义是int型数据的地址。这条语句就是将100转换为int*赋给p,
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章