一个简单的c语言问题

deleteooooo 2011-12-02 02:32:03
char *pt = "helloworld";这句话究竟是什么意思,希望各位牛人能给出一个详细的答案
...全文
173 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
小默 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 cbzjzsb123 的回复:]

引用 11 楼 zhao4zhong1 的回复:

引用 3 楼 zhao4zhong1 的回复:
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化……
[/Quote]
别理他,那是水贴,我已经在N多地方看到过了-_-|||
cbzjzsb123 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhao4zhong1 的回复:]

引用 3 楼 zhao4zhong1 的回复:
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编……
[/Quote]不懂汇编怎么办,一般的都只学C,不学汇编啊,你说的也太高级了
小默 2011-12-02
  • 打赏
  • 举报
回复
同志们,我觉得这个问题就不应该解释,就像我家隔壁的小孩问我,门为什么要叫门,柱子为什么要叫柱子。

有些东西只不过就是个约定,你只要知道它怎么用就好了,而怎么用是说不会的,自己试试。
tempnonody 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liru125504 的回复:]
给指针赋一个字符串常量,也就是将字符串常量"helloworld"在数据区的首地址赋给指针pt
[/Quote]++
如此如此如此 2011-12-02
  • 打赏
  • 举报
回复
pt 是一个指针变量 , 这个指针变量值就是 helloword的 首地址。

假设 helloword首地址为 0xaa

pt = 0xaa;
iceworldvip 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhao4zhong1 的回复:]

VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针……
[/Quote]

说的很棒,学习了!
wizard_tiger 2011-12-02
  • 打赏
  • 举报
回复
就是有一个字符串常量"helloworld",并把它的首地址赋给了指针pt。
灼眼的超哥 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhao4zhong1 的回复:]

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
[/Quote]
你的这句话我看了很多遍了....

char *pt = "helloworld";
一char型的个指针,指向"helloworld",用printf函数打印pt就是"helloworld"。
就像char pt[] = "helloworld";
CoolEgos 2011-12-02
  • 打赏
  • 举报
回复
定义一个指指向"helloworld"的首地址
赵4老师 2011-12-02
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
赵4老师 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhao4zhong1 的回复:]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,……
[/Quote]
//汇编窗口(Alt+8):
1: void main() {
//00401000 55 push ebp
//00401001 8B EC mov ebp,esp
//00401003 83 EC 44 sub esp,44h
//00401006 53 push ebx
//00401007 56 push esi
//00401008 57 push edi
2: char *pt = "helloworld";
//00401009 C7 45 FC 94 20 40 00 mov dword ptr [ebp-4],offset string "helloworld" (00402094)
3: }
//00401010 5F pop edi
//00401011 5E pop esi
//00401012 5B pop ebx
//00401013 8B E5 mov esp,ebp
//00401015 5D pop ebp
//00401016 C3 ret

//内存窗口(Alt+6):
//00402094 68 65 6C 6C 6F 77 6F 72 6C 64 helloworld
//0040209E 00 00 FF FF FF FF 2F 11 40 00 ....../.@.

请牢记:师傅是不能代替徒弟上厕所的!(^_^)
licaiyuren 2011-12-02
  • 打赏
  • 举报
回复
你想要什么样子的解答?
hondely 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhao4zhong1 的回复:]

VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针……
[/Quote]
赵神 又是这段文字??????!!!!!!!!!!!!!
凡迪 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 liang471x 的回复:]
char *pt = "helloworld";这句话究竟是什么意思,希望各位牛人能给出一个详细的答案
[/Quote]

这里首先定义了一个char型的指针pt,然后给pt赋值,即为指向 "helloworld" 这一字符串的地址。
  • 打赏
  • 举报
回复
pt指向字符串常量的首地址,pt隐式转换为const char *型
一鸣惊人 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhao4zhong1 的回复:]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,……
[/Quote]

a
yaningfan 2011-12-02
  • 打赏
  • 举报
回复

// char *pt = "helloworld";
{
// Pseudo C++ Code
String temp;
temp.String::String( "helloworld" );
char *pt = temp.String::operator char*(); // conversion operator
}

kama225 2011-12-02
  • 打赏
  • 举报
回复
意思是指针指向字符串的首地址...
赵4老师 2011-12-02
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(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、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
酱油党 2011-12-02
  • 打赏
  • 举报
回复
指针指向字符串的首地址。
加载更多回复(1)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧