社区
C++ 语言
帖子详情
字符串指针的一些疑惑
一秒一次郎
2012-07-02 09:08:46
小弟最近被字符串指针搞晕了
CString *a,b="abc";
*a="abc"; //错误
a="abc" //错误
*a+=b; //错误
char *a;
*a="abc"; //错误
a="abc"; //可以
这个能有人给讲讲是肿么回事么,晕了直接都
...全文
141
9
打赏
收藏
字符串指针的一些疑惑
小弟最近被字符串指针搞晕了 CString *a,b="abc"; *a="abc"; //错误 a="abc" //错误 *a+=b; //错误 char *a; *a="abc"; //错误 a="abc"; //可以 这个能有人给讲讲是肿么回事么,晕了直接都
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2012-07-02
打赏
举报
回复
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、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
不要写连自己也预测不了结果的代码!
lostfive
2012-07-02
打赏
举报
回复
char *a;//
是指你定义了一个指向char类型指针
*a="abc"; //错误
a是指向char类型的指针也就意味着*a的类型是char,错误就好比是char b; b="abc";
a="abc"; //可以
a是指向char类型的指针,把字符串地址赋给a也就是把字符串首地址赋给了a
也就等价于 *a='a';*(a+1)='b';*(a+2)='c';*(a+3)='\0';
至于CString你如果把定义搞清的话 解释同上
你可以把定义发出来
不过解释应该是类似的
gotojyh
2012-07-02
打赏
举报
回复
基本上错误是没有给指针申请内存
CString *a=new CString;
char *a=new char[10];
strncpy(a,"abc",10);
一叶之舟
2012-07-02
打赏
举报
回复
CString *a,b="abc";
*a="abc"; //错误a相个未初始化的指针,这样肯定错了。
a="abc" //错误,同上
*a+=b; //错误同上
char *a;
*a="abc"; //错误同上
a="abc"; //可以,给指针初始化正确。
jiandingzhe
2012-07-02
打赏
举报
回复
从没用过微软的东西
庄鱼
2012-07-02
打赏
举报
回复
确切地说,string应描述为字符串数据管理类型,属于结构定义类型;字符串属于隐式转换基本数据类型
庄鱼
2012-07-02
打赏
举报
回复
楼主犯了个概念错误:string为字符串数据类型,而不是字符串!
CString是类似string的一种数据类型,同样也不是字符串。
class的指针类型必须要有源数据,楼主的问题在于CString *a缺乏数据源,*a="abc"导致存储单元不确定错误,a="abc"则导致数据类型引用不一致错误,*a+=b同样是存储单元不确定错误。
如果这样写就可以:a = &b; *a="abc"; 或 a = new CString();*a="abc";
char *a;为字符串,也叫字符串指针(沿袭早期C语言习惯,在C++里应称之为字符串指针)。*a="abc";引发类型不一致错误:*a为字符单元,而非字符串。
ohayou
2012-07-02
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
引用 5 楼 zhao4zhong1 的回复:
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
……
[/Quote]
你以为人家的星星是怎么来的
庄鱼
2012-07-02
打赏
举报
回复
[Quote=引用 5 楼 zhao4zhong1 的回复:]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C……
[/Quote]
这种复制/粘贴的帖子不会也罢,除非你自己也不知道原因
c语言下搞定
字符串
(推荐)
c语言下搞定
字符串
(推荐),让对于对
字符串
迷茫的人不再
疑惑
,敢于使用
指针
@@
你必须知道的495个C语言问题
5.14 为什么有那么多关于空
指针
的
疑惑
?为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空
指针
有关的东西呢? 5.16 考虑到有关空
指针
的所有这些困惑,要求它们的内部表示都必须为...
Python 47个
字符串
方法
# Python 47个
字符串
方法## 课程介绍同学们是否总是要搜资料、查官网后,才知道怎么操作
字符串
?如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、...
《你必须知道的495个C语言问题》
书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、
指针
、
字符串
、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...
c语言
指针
字符串
体会
这是我学习
字符串
指针
的一些小体会,有错的话请指正(这个很简单的)。初学容易混淆。 定义:我们可以定义
字符串
指针
如:char *a="hello";但不能用定义字符
指针
如:char*a='a';这是因为在储存
字符串
时,内存会用数组...
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章