社区
C++ 语言
帖子详情
指针偏移量,请高手指点一下
BCDMIC
2012-07-05 10:44:04
char *content = NULL;
content = (char*)(Buf+16);
问题是,Buf也是一个char *,我要从Buf中取得content,但取的时候总是要多取一位,比如正常的应该是“你好!”,取出来的却是“你好!e”,这个e是后面一位的,这个问题该怎么解决呢?谢谢大家
...全文
333
8
打赏
收藏
指针偏移量,请高手指点一下
char *content = NULL; content = (char*)(Buf+16); 问题是,Buf也是一个char *,我要从Buf中取得content,但取的时候总是要多取一位,比如正常的应该是“你好!”,取出来的却是“你好!e”,这个e是后面一位的,这个问题该怎么解决呢?谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BCDMIC
2012-07-13
打赏
举报
回复
恩,问题解决了,就是长度没控制好的原因
谢谢大家
qq120848369
2012-07-05
打赏
举报
回复
gbk or utf8?
C__Allen
2012-07-05
打赏
举报
回复
你都知道多取了一位 少取一位不就行了
赵4老师
2012-07-05
打赏
举报
回复
推荐使用WinHex软件查看文件或内存中的原始字节内容。
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
独自一人的昵称谁用了
2012-07-05
打赏
举报
回复
strcpy很容易实现,或者写个循环,一个字符一个字符的写入
复制整个字符串
while(*Buf!='\0')
{
*content=*Buf;
++content;
++Buf;
}
微型蚂蚁
2012-07-05
打赏
举报
回复
同意楼上说的
你可能还要注意一下要取的数据的长度,中文字符长度和英文和符号的长度看编码的情况会有所不同,所以调用strlen,wstrlen再去取数据的时候可能有问题
IVERS0N
2012-07-05
打赏
举报
回复
中文字符问题
用宽字符表示把
cobra_chen
2012-07-05
打赏
举报
回复
取指针的内容不是这样取的。
应该用一块新的内存来取。
如果是字符串用strcpy。
如果是数据,那么就用memcpy。
-
另外楼主如果用之前那块内存,那么用指针偏移是可以的。
但是楼主说取出的数据多了一个e。估计是没有在“你好!”加入结束符,字符串是\0结束的。
解密C/C++
指针
:内存操作的艺术
《C/C++
指针
详解:从基础到数组
指针
与
指针
数组》 本文系统讲解了
指针
的核心概念与应用。首先介绍了普通
指针
(整型
指针
)的基础原理,包括地址操作和解引用;其次解析了字符
指针
对字符串的存储方式;重点区分了数组
指针
(指向整个数组的
指针
)和
指针
数组(存储
指针
的数组),并通过内存地址变化和二维数组案例阐明其差异;最后简述了动态内存管理的优势。文章通过代码示例和内存分析,揭示了
指针
运算的本质是指向类型大小与偏移步数的乘积,帮助读者深入理解
指针
机制。
4.2.二维数组和它的
指针
这片文章介绍二维数组int a[ i ] [ j ]中的符号:a,&a[ i ],&a[ i ][ j ],a[ i ][ j ],&a[ i ] [ j ]的含义,重点在后面第二部分的分析,但是前面第一部分的复习数组
指针
,
指针
数组和二维
指针
是前提,前面的不会,后面的没法理解。这片文章写的有些费劲,个人能力不够,可能会有错误,希望各位朋友能够指正,共同进步。//握手一:先回顾
一下
数组
指针
,
指针
数组,
二维数组和它的
指针
这片文章介绍二维数组int a[ i ] [ j ]中的符号:a,&a[ i ],&a[ i ][ j ],a[ i ][ j ],&a[ i ] [ j ]的含义,重点在后面第二部分的分析,但是前面第一部分的复习数组
指针
,
指针
数组和二维
指针
是前提,前面的不会,后面的没法理解。这片文章写的有些费劲,个人能力不够,可能会有错误,希望各位朋友能够指正,共同...
new创建多维数组问题
new创建多维数组问题。
请
高手
指点
! 我在看一些C++方面的教材时,一些书上这样写到: 用New操作可以创建多维数组,new 类型名 T[下标表达式1][下表表达式2]...。数组的个数是除最左边一位外各位下表表达式的乘积。如:float (*p)[25][10]; p=new floa
[《编程
高手
箴言》读后感]
[《编程
高手
箴言》读后感] 毕业也有几年了,也看了和学了不少东西,《编程
高手
箴言》读后感。有时也想写点什么,但总是觉得头绪很多,一直没有动笔。最近翻了翻梁先生的《编程
高手
箴言》,突然想写点什么,权且用读书笔记的形式写点东西。 等号上面的摘字《箴言》,下面则是笔者自己的感想。希望大家指教,但是谩骂就不必了,谢谢。注:这一部分涉及《箴言》第一章。 在PC这个领域,现在的程序已不等于软件了。
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章